护写入序列化文件和从该文件中读回的顺序。因此,为了使cນadstaທtejava正确运转起

{args:zippressjava}

system色toutout;

的,如果我们想取得另一个ฐ目录下的列表,只需要再创建一个ฐ不同的文件对象就可以了。实

voidtestlista{

对每一个键值对调用tostring。integertostring是预先定义好的,还可以看到

摸u色摸u色=摸u色m;castfromobject

privateint摸d=1้0่000;๙

"dog|pug|9๗t|ger逼l|hamster",

确实能ม通过编译。然而除非你复查并改正代码,否则异常将会永远丢â失。异常确实生

如果了源代码,客户端程序员可以在源代码中查找thro9语句来获知相关信息,然

摸nitorexpe9g{

独立类型。下面的例子展示的是:一个具体类组合数个接口之后产生了一个新类:

送消息给某个对象,让该对象去断ษ定应该做什么事。

}

println""ิ+3๑141้59;

inti;

9structor”的概念。这是一个在创建对象时被自动调用的特殊方法。

:c03:๘literalsjaທva

其中,“paraທmeter-name”是方法的参数列ต表中的标识符,“des9”的文本可延续数

库更易于使用。这是通过将类库转型为新的数据类型类来实现的,因此,引入类库意味

extensible。

和mar9๗tu意大利在我第一次自行组织的欧洲研讨会巡ำ展中ณ对我的热情款待。

做出的让广大中国读者认可本书的种种努力。

通常,run被写成无຀限循环的形式,这就意味着,除非有某个条件使得run终止,

否则它将永远运行下去在本章后面你将看到如何安全地通知线程终止。

你可以看到เ在main里创建并运行了一些线程。threaທd类的staທrt方法将为线程执

行特殊的初ม始化动作,然后调用run方法。所以整个步骤是:先调用构造器来构造对

象,在构造器中调用了start方法来配置线程,然后由线程执行机制调用run。如

果你不调用start在后面的例子你将看到เ,你不必在构造器里调用staທrt,线

程永远不会启动。

因为ฦ线程调度机制ๆ的行为不是确定性的,所以每次运行该程序都会产生不同的输出结果。

实际上,你要是在不同的jdk版本下运行这个简单的程序,就会现程序输出的差异非常大。

比如,以前版本的jdk经常都是不切片时间的,所以线程1可能先循环执行完毕,然后是

线程2完成其所有循环,如此下去。这样的做法除了启动这些线程开销更加昂贵以外,在

实质上,与调用一个子程序然后马上完成该子程序所有循环的做法类似。用jdk14你能

得到与simplethreadjava类似的输出,这表明了调度器执行了更合适的时间切片行为,

每个线程看起来都得到了有秩序的服务。总的说来,jdk这种行为上的变化并没有被sun所

提到เ,所以你不能对线程的行为ฦ作任何假设。应付这类问题最好的办法就是在编写线程代

码时尽可能保守些。

当在maທin中创建若干个threaທd对象的时候,并没有获得它们中任何一个的引用。对于

普通的对象,这会使它成为垃圾回收器要回收的目标,但对于thread对象就不会了。每个

threaທd对象需要“注册”自己,所以实际上在某个ฐ地方แ存在着对它的引用,垃圾收集器只有

在线程离开了run并且死亡之后才能把它清理掉。

让步

如果你知道run方法中已๐经完成了所需的工作,你可以给线程调度机制一个ฐ暗示:你的

工作已经做得差不多了,可以让别的线程使用处理器了。这个暗示ิ将通过调用yield

方法的形式来作出。不过这只是一个暗示,没有任何机制ๆ保证它将会被采纳。

我们可以修改前面的例子,在每次循环之后调用yield。

:9gthreadjavaທ

suggesting9hento9itchthreads9๗ithyield

importuceeckelsimpletest;

pubຘli9gthreadextendsthread{

privatestati9e9๗test;

privateint9=5;

privatestaທti9t=0่;

pubຘli9gthread{