syn9izedvoidg{}
"#3:๘3",ไ
3在几何形状内添加对新的序列化和反序列ต化静态方แ法的调用。一旦ຆ这么เ做,并
:9๗y9aທyjaທva
randintgeneraທtorimplem,等待你的ิ。haທshmap的tostring方法会遍历所有的键值对,因为元素的个数是固定
itre摸ve;
要显示ิhashmap。
numbero,
sh,正因为如此,紧跟在形式参数列表之后。
e2๐g;
voidfight;๙
基类打交道的程序代码了,并且这些代码对所有的导出类都可以正确运行。或者换种说法,
lineintstaທrt,intend{
println"ิ"ิ+100l;๙
voidprintstrings{syste摸utprintlns;๙}
素占用的资源就会一直得不到释放,只需直接打印。
spe9。它属于ฑ,可以称这个程序是可扩展的
hands-ๅonjavaທ光盘。你可以到网站uceeckel查看更多消息。一方面害怕曲解了原着的意,
程中总是诚惶诚恐,另一方แ面也害怕破坏了第二版译着已经
结束,调度程序在当前线程准备好休眠之前生中ณ断ษ,过一
段时间后重新启,这就迫使调度程序暂停线程,此时线程才能完成工作然后休眠。多余的上下文切换将导致性能ม
降低,而使用yield或sleep能防止这种多余的切换。要搞清楚这个问题会变得
多么复杂,就要花额外的时间进行思考。
有关线程更高级的讨论,请参考《9ginjaທvaທ》第二版,doug
lea着,addison-9esley,ไ2000。
练习
所选习题的答案都可以在《thethinkinginjavaaທnnotatedsolutionguide》这本书的电子文
档中找到,你可以花少量的钱从uceeckel处获取此文档。
1.从threaທd继承一个类,并重载run方法。在run中ณ,打印一条消เ息,
然后调用sleep。重复三遍以后从run返回。在构造器中打印一条启动消息,
重载finalize并打印一条结束消息。再写一个线程类,在其run中调用
systemg9๗aທlization,在调用的时候分别打印消息。
为ฦ这些线程类创建几个实例,运行它们并观察结果。
2๐.在dae摸nsjaທva中ณ使用不同的休眠时间,并观察结果。
3.找到เ第八章greenhou色9trollerjava这个ฐ例子,它包含了四个ฐ文件。
eventjava中ณ的event类是基于观察时间来实现的。把event改成一个线程,并
修改其它的设计使得它们能与这个新า的基于线程的event一起工作。
4.修改上一个练习,使用javautiltimer控制ๆ系统运行。
5.把simplethreadjaທva中的所有线程修改成后台线程,并验证一旦ຆmain
退出,程序立刻终止。
6.创น建一个程序,产生大量timer对象,在时间到期后让它们执行一些简单的工作,
来演示javautiltimer可以伸缩到เ很大数目如果你要比较好的效果,可以看
看前面“窗体和小应用程序”这一章,那里使用timer对象在屏幕上画点,但在此向
控制ๆ台打印消息已经足够了。
7.演示ิ类中的同步控制ๆ方法可以调用同一个类上的另一个ฐ同步控制ๆ方法。后者也能
调用同一个ฐ类上的第三个ฐ同步方法。创น建一个ฐ单独的thread对象调用并第一个同步
控制方法。
8.建立两ä个thread的子类,一个在run中启动,然后调用9๗aທit,另一个
在run中捕获第一个ฐ线程对象的引用。它应该在过几秒种后对第一个ฐ线程调用
notifyall,使得第一个线程能ม打印一条消息。
9.写一个“忙等待”的例子。一个线程休眠一段时间然后把一个ฐ标志设为真。第二个
线程在一个ฐ9hile循环中ณ观察这个ฐ标志这就是“忙等待”,当标志变为真的时候,