wait()方法在等待时释放对象锁

<span style="font-size:14px;">import java.util.*;
public class Worker extends Thread {
 private volatile boolean quittingTime = false;
 public void run() {
 while (! quittingTime)
 pretendToWork();
 System.out.println("Beer is good");
 }
 private void pretendToWork() {
 try {
 Thread.sleep(300); // Sleeping on the job?
 } catch (InterruptedException ex) { }
 }
 // It' s quitting time, wait for worker - Called by good boss
 synchronized void quit() throws InterruptedException {
 quittingTime = true;
 join();
 }
 // Rescind quitting time - Called by evil boss
 synchronized void keepWorking() {
 quittingTime = false;
 }
 public static void main(String[]  args)
 throws InterruptedException {
 final Worker worker = new Worker();
 worker.start();
 Timer t = new Timer(true); // Daemon thread
 t.schedule(new TimerTask() {
 public void run() { worker. keepWorking(); }
 } , 500);
 Thread.sleep(400);
 worker. quit();
 }
}</span>


<span style="font-family: TT1F18o01; font-size: 12pt;">我们<span style="font-family: TT1F18o00; font-size: 12pt;">会<span style="font-family: TT1F18o02; font-size: 12pt;">认<span style="font-family: TT1F18o00; font-size: 12pt;">为程序将运行不到 1 <span style="font-family: TT1F18o01; font-size: 12pt;">秒钟<span style="font-family: TT1F18o00; font-size: 12pt;">, <span style="font-family: TT1F18o01; font-size: 12pt;">打印 B<span style="font-family: TT1F18o00; font-size: 12pt;">eer is <span style="font-family: TT1F18o01; font-size: 12pt;">g<span style="font-family: TT1F18o00; font-size: 12pt;">ood ,然后正<span style="font-family: TT1F18o01; font-size: 12pt;">常<span style="font-family: TT1F18o00; font-size: 12pt;">的结
<span style="font-family: TT1F18o03; font-size: 12pt;">束<span style="font-family: TT1F18o00; font-size: 12pt;">。但是当你<span style="font-family: TT1F18o02; font-size: 12pt;">尝<span style="font-family: TT1F18o00; font-size: 12pt;">试运行这个程序的时<span style="font-family: TT1F18o01; font-size: 12pt;">候<span style="font-family: TT1F18o00; font-size: 12pt;">,你会<span style="font-family: TT1F18o01; font-size: 12pt;">发现<span style="font-family: TT1F18o00; font-size: 12pt;">它<span style="font-family: TT1F18o01; font-size: 12pt;">没<span style="font-family: TT1F18o00; font-size: 12pt;">有<span style="font-family: TT1F18o01; font-size: 12pt;">打印<span style="font-family: TT1F18o00; font-size: 12pt;">任何<span style="font-family: TT1F18o02; font-size: 12pt;">东西<span style="font-family: TT1F18o00; font-size: 12pt;">,而是一<span style="font-size: 12pt;">直处<span style="font-size: 12pt;">于<span style="font-family: TT1F18o04; font-size: 12pt;">挂<span style="font-family: TT1F18o00; font-size: 12pt;">起<span style="font-family: TT1F18o04; font-size: 12pt;">状<span style="font-family: TT1F18o03; font-size: 12pt;">态<span style="font-family: TT1F18o00; font-size: 12pt;">(<span style="font-family: TT1F18o01; font-size: 12pt;">没<span style="font-family: TT1F18o00; font-size: 12pt;">有结<span style="font-family: TT1F18o03; font-size: 12pt;">束<span style="font-family: TT1F18o00; font-size: 12pt;">)。 <span style="font-family: TT1F18o01; font-size: 12pt;">我们<span style="font-family: TT1F18o00; font-size: 12pt;">的分<span style="font-family: TT1F18o01; font-size: 12pt;">析<span style="font-family: TT1F18o02; font-size: 12pt;">哪<span style="font-family: TT1F18o00; font-size: 12pt;">里<span style="font-family: TT1F18o01; font-size: 12pt;">出<span style="font-family: TT1F18o00; font-size: 12pt;">错了<span style="font-family: TT1F18o01; font-size: 12pt;">呢<span style="font-family: TT1F18o00; font-size: 12pt;">?</span><br style="orphans: 2; text-align: -webkit-auto; widows: 2;" />
</span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span><span style="font-family: TT1F18o00; font-size: 12pt;">问题的答案<span style="font-family: TT1F18o01; font-size: 12pt;">涉及<span style="font-family: TT1F18o00; font-size: 12pt;">到了 T<span style="font-family: TT1F18o01; font-size: 12pt;">h<span style="font-family: TT1F18o00; font-size: 12pt;">read. <span style="font-family: TT1F18o01; font-size: 12pt;">j<span style="font-family: TT1F18o00; font-size: 12pt;">oin 的<span style="font-family: TT1F18o01; font-size: 12pt;">实现<span style="font-family: TT1F18o00; font-size: 12pt;">。这<span style="font-family: TT1F18o01; font-size: 12pt;">部<span style="font-family: TT1F18o00; font-size: 12pt;">分<span style="font-family: TT1F18o01; font-size: 12pt;">内 <span style="font-family: TT1F18o00; font-size: 12pt;">容在<span style="font-family: TT1F18o01; font-size: 12pt;">关<span style="font-family: TT1F18o00; font-size: 12pt;">于该方法的<span style="font-family: TT1F18o01; font-size: 12pt;">文档<span style="font-family: TT1F18o00; font-size: 12pt;">中
<span style="font-size: 12pt;">(JD<span style="font-family: TT1F18o01; font-size: 12pt;">K 文档<span style="font-family: TT1F18o00; font-size: 12pt;">)是<span style="font-family: TT1F18o01; font-size: 12pt;">找<span style="font-family: TT1F18o00; font-size: 12pt;">不到的, <span style="font-family: TT1F18o01; font-size: 12pt;">至少<span style="font-family: TT1F18o00; font-size: 12pt;">在<span style="font-family: TT1F18o05; font-size: 12pt;">迄<span style="font-family: TT1F18o04; font-size: 12pt;">今<span style="font-family: TT1F18o00; font-size: 12pt;">为止<span style="font-family: TT1F18o01; font-size: 12pt;">发<span style="font-family: TT1F18o03; font-size: 12pt;">布<span style="font-family: TT1F18o00; font-size: 12pt;">的<span style="font-family: TT1F18o01; font-size: 12pt;">文档<span style="font-family: TT1F18o00; font-size: 12pt;">中如此, <span style="font-family: TT1F18o01; font-size: 12pt;">也<span style="font-family: TT1F18o00; font-size: 12pt;">包<span style="font-family: TT1F18o02; font-size: 12pt;">括 <span style="font-family: TT1F18o01; font-size: 12pt;">5<span style="font-family: TT1F18o00; font-size: 12pt;">.0 <span style="font-family: TT1F18o01; font-size: 12pt;">版<span style="font-family: TT1F18o00; font-size: 12pt;">。
<span style="font-size: 12pt;">在<span style="font-family: TT1F18o01; font-size: 12pt;">内部<span style="font-family: TT1F18o00; font-size: 12pt;">,T<span style="font-family: TT1F18o01; font-size: 12pt;">h<span style="font-family: TT1F18o00; font-size: 12pt;">read. <span style="font-family: TT1F18o01; font-size: 12pt;">j<span style="font-family: TT1F18o00; font-size: 12pt;">oin 方法在表<span style="font-family: TT1F18o01; font-size: 12pt;">示<span style="font-family: TT1F18o00; font-size: 12pt;">正在被<span style="font-family: TT1F18o02; font-size: 12pt;">连<span style="font-family: TT1F18o01; font-size: 12pt;">接<span style="font-family: TT1F18o00; font-size: 12pt;">(<span style="font-family: TT1F18o01; font-size: 12pt;">j<span style="font-family: TT1F18o00; font-size: 12pt;">oin)的那个 T<span style="font-family: TT1F18o01; font-size: 12pt;">h<span style="font-family: TT1F18o00; font-size: 12pt;">read <span style="font-family: TT1F18o01; font-size: 12pt;">实例<span style="font-family: TT1F18o00; font-size: 12pt;">上调
<span style="font-size: 12pt;">用 Ob<span style="font-family: TT1F18o01; font-size: 12pt;">j<span style="font-family: TT1F18o00; font-size: 12pt;">ect. <span style="font-family: TT1F18o01; font-size: 12pt;">w<span style="font-family: TT1F18o00; font-size: 12pt;">ait 方法。这<span style="font-family: TT1F18o01; font-size: 12pt;">样<span style="font-family: TT1F18o00; font-size: 12pt;">就在等<span style="font-family: TT1F18o03; font-size: 12pt;">待<span style="font-family: TT1F18o01; font-size: 12pt;">期<span style="font-family: TT1F18o00; font-size: 12pt;">间<span style="font-family: TT1F18o01; font-size: 12pt;">释<span style="font-family: TT1F18o02; font-size: 12pt;">放<span style="font-family: TT1F18o00; font-size: 12pt;">了该对<span style="font-family: TT1F18o01; font-size: 12pt;">象<span style="font-family: TT1F18o00; font-size: 12pt;">上的<span style="font-family: TT1F18o04; font-size: 12pt;">锁<span style="font-family: TT1F18o00; font-size: 12pt;">。在<span style="font-family: TT1F18o01; font-size: 12pt;">我们<span style="font-family: TT1F18o00; font-size: 12pt;">的程序中,
<span style="font-size: 12pt;">这就使得作为<span style="font-family: TT1F18o01; font-size: 12pt;">恶<span style="font-family: TT1F18o05; font-size: 12pt;">毒<span style="font-family: TT1F18o02; font-size: 12pt;">老<span style="font-family: TT1F18o05; font-size: 12pt;">板<span style="font-family: TT1F18o00; font-size: 12pt;">的定时<span style="font-family: TT1F18o01; font-size: 12pt;">器线<span style="font-family: TT1F18o00; font-size: 12pt;">程能够<span style="font-family: TT1F18o05; font-size: 12pt;">堂<span style="font-family: TT1F18o00; font-size: 12pt;">而<span style="font-family: TT1F18o05; font-size: 12pt;">皇<span style="font-family: TT1F18o00; font-size: 12pt;">之的将 <span style="font-family: TT1F18o02; font-size: 12pt;">q<span style="font-family: TT1F18o00; font-size: 12pt;">uittin<span style="font-family: TT1F18o01; font-size: 12pt;">g<span style="font-family: TT1F18o00; font-size: 12pt;">Time <span style="font-family: TT1F18o01; font-size: 12pt;">重新设置<span style="font-size: 12pt;">成 <span style="font-family: TT1F18o00; font-size: 12pt;">false, <span style="font-family: TT1F18o01; font-size: 12pt;">尽<span style="font-family: TT1F18o00; font-size: 12pt;">管此时<span style="font-family: TT1F18o03; font-size: 12pt;">主<span style="font-family: TT1F18o01; font-size: 12pt;">线<span style="font-family: TT1F18o00; font-size: 12pt;">程正在<span style="font-family: TT1F18o01; font-size: 12pt;">执<span style="font-family: TT1F18o00; font-size: 12pt;">行同<span style="font-family: TT1F18o02; font-size: 12pt;">步化<span style="font-family: TT1F18o00; font-size: 12pt;">的 <span style="font-family: TT1F18o02; font-size: 12pt;">q<span style="font-family: TT1F18o00; font-size: 12pt;">uit 方法。这<span style="font-family: TT1F18o01; font-size: 12pt;">样<span style="font-family: TT1F18o00; font-size: 12pt;">的结果是, <span style="font-family: TT1F18o01; font-size: 12pt;">工人<span style="font-size: 12pt;">线<span style="font-family: TT1F18o00; font-size: 12pt;">程<span style="font-family: TT1F18o02; font-size: 12pt;">永远<span style="font-family: TT1F18o00; font-size: 12pt;">不会看到<span style="font-family: TT1F18o04; font-size: 12pt;">停<span style="font-family: TT1F18o00; font-size: 12pt;">止时间的到来,它会<span style="font-family: TT1F18o02; font-size: 12pt;">永远<span style="font-family: TT1F18o00; font-size: 12pt;">运行下<span style="font-family: TT1F18o01; font-size: 12pt;">去<span style="font-family: TT1F18o00; font-size: 12pt;">。作为<span style="font-family: TT1F18o05; font-size: 12pt;">善<span style="font-family: TT1F18o02; font-size: 12pt;">良<span style="font-family: TT1F18o00; font-size: 12pt;">的<span style="font-family: TT1F18o02; font-size: 12pt;">老<span style="font-family: TT1F18o05; font-size: 12pt;">板<span style="font-family: TT1F18o00; font-size: 12pt;">的<span style="font-family: TT1F18o03; font-size: 12pt;">主<span style="font-family: TT1F18o01; font-size: 12pt;">线
<span style="font-family: TT1F18o00; font-size: 12pt;">程<span style="font-family: TT1F18o01; font-size: 12pt;">也<span style="font-family: TT1F18o00; font-size: 12pt;">就<span style="font-family: TT1F18o02; font-size: 12pt;">永远<span style="font-family: TT1F18o00; font-size: 12pt;">不会<span style="font-family: TT1F18o01; font-size: 12pt;">从 j<span style="font-family: TT1F18o00; font-size: 12pt;">oin 方法中返回了 。
<span style="font-size: 12pt;">使这个程序产生了<span style="font-family: TT1F18o02; font-size: 12pt;">预<span style="font-family: TT1F18o05; font-size: 12pt;">料<span style="font-family: TT1F18o00; font-size: 12pt;">之外的行为的<span style="font-family: TT1F18o02; font-size: 12pt;">根<span style="font-family: TT1F18o01; font-size: 12pt;">本原<span style="font-family: TT1F18o00; font-size: 12pt;">因就是 <span style="font-family: TT1F18o03; font-size: 12pt;">W<span style="font-family: TT1F18o00; font-size: 12pt;">or<span style="font-family: TT1F18o03; font-size: 12pt;">k<span style="font-family: TT1F18o00; font-size: 12pt;">erT<span style="font-family: TT1F18o01; font-size: 12pt;">h<span style="font-family: TT1F18o00; font-size: 12pt;">read <span style="font-family: TT1F18o01; font-size: 12pt;">类<span style="font-family: TT1F18o00; font-size: 12pt;">的作<span style="font-family: TT1F18o01; font-size: 12pt;">者<span style="font-family: TT1F18o00; font-size: 12pt;">使用
<span style="font-size: 12pt;">了<span style="font-family: TT1F18o01; font-size: 12pt;">实例<span style="font-family: TT1F18o00; font-size: 12pt;">上的<span style="font-family: TT1F18o04; font-size: 12pt;">锁<span style="font-family: TT1F18o00; font-size: 12pt;">来确<span style="font-family: TT1F18o01; font-size: 12pt;">保 <span style="font-family: TT1F18o02; font-size: 12pt;">q<span style="font-family: TT1F18o00; font-size: 12pt;">uit 方法和 <span style="font-family: TT1F18o03; font-size: 12pt;">k<span style="font-family: TT1F18o00; font-size: 12pt;">eep<span style="font-family: TT1F18o03; font-size: 12pt;">W<span style="font-family: TT1F18o00; font-size: 12pt;">or<span style="font-family: TT1F18o03; font-size: 12pt;">k<span style="font-family: TT1F18o00; font-size: 12pt;">in<span style="font-family: TT1F18o01; font-size: 12pt;">g <span style="font-family: TT1F18o00; font-size: 12pt;">方法的<span style="font-family: TT1F18o01; font-size: 12pt;">互<span style="font-family: TT1F18o05; font-size: 12pt;">斥<span style="font-family: TT1F18o00; font-size: 12pt;">,但是这种用法与<span style="font-family: TT1F18o03; font-size: 12pt;">超<span style="font-size: 12pt;">类<span style="font-family: TT1F18o00; font-size: 12pt;">(T<span style="font-family: TT1F18o01; font-size: 12pt;">h<span style="font-family: TT1F18o00; font-size: 12pt;">read) <span style="font-family: TT1F18o01; font-size: 12pt;">内部<span style="font-family: TT1F18o00; font-size: 12pt;">对该<span style="font-family: TT1F18o04; font-size: 12pt;">锁<span style="font-family: TT1F18o00; font-size: 12pt;">的用法<span style="font-family: TT1F18o01; font-size: 12pt;">发<span style="font-family: TT1F18o00; font-size: 12pt;">生了<span style="font-family: TT1F18o02; font-size: 12pt;">冲突<span style="font-family: TT1F18o00; font-size: 12pt;">。这里的<span style="font-family: TT1F18o01; font-size: 12pt;">教训<span style="font-family: TT1F18o00; font-size: 12pt;">是:除非有<span style="font-family: TT1F18o01; font-size: 12pt;">关<span style="font-family: TT1F18o00; font-size: 12pt;">于<span style="font-family: TT1F18o01; font-size: 12pt;">某<span style="font-family: TT1F18o00; font-size: 12pt;">个<span style="font-family: TT1F18o01; font-size: 12pt;">类
<span style="font-family: TT1F18o00; font-size: 12pt;">的<span style="font-family: TT1F18o02; font-size: 12pt;">详<span style="font-family: TT1F18o01; font-size: 12pt;">细<span style="font-family: TT1F18o00; font-size: 12pt;">说<span style="font-family: TT1F18o01; font-size: 12pt;">明<span style="font-family: TT1F18o00; font-size: 12pt;">作为<span style="font-family: TT1F18o01; font-size: 12pt;">保<span style="font-family: TT1F18o02; font-size: 12pt;">证<span style="font-family: TT1F18o00; font-size: 12pt;">,否<span style="font-family: TT1F18o01; font-size: 12pt;">则<span style="font-family: TT1F18o02; font-size: 12pt;">千万<span style="font-family: TT1F18o00; font-size: 12pt;">不要<span style="font-family: TT1F18o02; font-size: 12pt;">假<span style="font-family: TT1F18o01; font-size: 12pt;">设<span style="font-family: TT1F18o02; font-size: 12pt;">库<span style="font-family: TT1F18o00; font-size: 12pt;">中的这个<span style="font-family: TT1F18o01; font-size: 12pt;">类<span style="font-family: TT1F18o00; font-size: 12pt;">对它的<span style="font-family: TT1F18o01; font-size: 12pt;">实例<span style="font-family: TT1F18o00; font-size: 12pt;">或<span style="font-family: TT1F18o01; font-size: 12pt;">类<span style="font-family: TT1F18o00; font-size: 12pt;">上的<span style="font-family: TT1F18o04; font-size: 12pt;">锁<span style="font-family: TT1F18o00; font-size: 12pt;">会<span style="font-size: 12pt;">做<span style="font-size: 12pt;">(或<span style="font-family: TT1F18o01; font-size: 12pt;">者<span style="font-family: TT1F18o00; font-size: 12pt;">不会<span style="font-family: TT1F18o01; font-size: 12pt;">做<span style="font-family: TT1F18o00; font-size: 12pt;">) <span style="font-family: TT1F18o01; font-size: 12pt;">某些事<span style="font-family: TT1F18o02; font-size: 12pt;">情<span style="font-family: TT1F18o00; font-size: 12pt;">。对于<span style="font-family: TT1F18o02; font-size: 12pt;">库<span style="font-family: TT1F18o00; font-size: 12pt;">的任何调用都可能会产生对 <span style="font-family: TT1F18o01; font-size: 12pt;">w<span style="font-family: TT1F18o00; font-size: 12pt;">ait、notif<span style="font-family: TT1F18o01; font-size: 12pt;">y<span style="font-family: TT1F18o00; font-size: 12pt;">、
<span style="font-size: 12pt;">notif<span style="font-family: TT1F18o01; font-size: 12pt;">y<span style="font-family: TT1F18o00; font-size: 12pt;">All 方法或<span style="font-family: TT1F18o01; font-size: 12pt;">者某<span style="font-family: TT1F18o00; font-size: 12pt;">个同<span style="font-family: TT1F18o02; font-size: 12pt;">步化<span style="font-family: TT1F18o00; font-size: 12pt;">方法的调用。所有这<span style="font-family: TT1F18o01; font-size: 12pt;">些<span style="font-family: TT1F18o00; font-size: 12pt;">,都可能对应用<span style="font-family: TT1F18o03; font-size: 12pt;">级<span style="font-family: TT1F18o00; font-size: 12pt;">的代<span style="font-family: TT1F18o02; font-size: 12pt;">码
<span style="font-family: TT1F18o00; font-size: 12pt;">产生<span style="font-family: TT1F18o02; font-size: 12pt;">影响<span style="font-family: TT1F18o00; font-size: 12pt;">。
<span style="font-size: 12pt;">如果你需要<span style="font-family: TT1F18o03; font-size: 12pt;">获<span style="font-family: TT1F18o00; font-size: 12pt;">得<span style="font-family: TT1F18o01; font-size: 12pt;">某<span style="font-family: TT1F18o00; font-size: 12pt;">个<span style="font-family: TT1F18o04; font-size: 12pt;">锁<span style="font-family: TT1F18o00; font-size: 12pt;">的<span style="font-family: TT1F18o01; font-size: 12pt;">完<span style="font-family: TT1F18o02; font-size: 12pt;">全<span style="font-family: TT1F18o04; font-size: 12pt;">控<span style="font-family: TT1F18o01; font-size: 12pt;">制<span style="font-family: TT1F18o04; font-size: 12pt;">权<span style="font-family: TT1F18o00; font-size: 12pt;">,那么就要确定<span style="font-family: TT1F18o01; font-size: 12pt;">没<span style="font-family: TT1F18o00; font-size: 12pt;">有任何其他<span style="font-family: TT1F18o01; font-size: 12pt;">人<span style="font-family: TT1F18o00; font-size: 12pt;">能够<span style="font-family: TT1F18o04; font-size: 12pt;">访<span style="font-family: TT1F18o00; font-size: 12pt;">问到
<span style="font-size: 12pt;">它。如果你的<span style="font-family: TT1F18o01; font-size: 12pt;">类<span style="font-family: TT1F18o02; font-size: 12pt;">扩展<span style="font-family: TT1F18o00; font-size: 12pt;">了<span style="font-family: TT1F18o02; font-size: 12pt;">库<span style="font-family: TT1F18o00; font-size: 12pt;">中的<span style="font-family: TT1F18o01; font-size: 12pt;">某<span style="font-family: TT1F18o00; font-size: 12pt;">个<span style="font-family: TT1F18o01; font-size: 12pt;">类<span style="font-family: TT1F18o00; font-size: 12pt;">,而这个<span style="font-family: TT1F18o02; font-size: 12pt;">库<span style="font-family: TT1F18o00; font-size: 12pt;">中的<span style="font-family: TT1F18o01; font-size: 12pt;">类<span style="font-family: TT1F18o00; font-size: 12pt;">可能使用了它的<span style="font-family: TT1F18o04; font-size: 12pt;">锁<span style="font-family: TT1F18o00; font-size: 12pt;">,或<span style="font-family: TT1F18o01; font-size: 12pt;">者
<span style="font-family: TT1F18o00; font-size: 12pt;">如果<span style="font-family: TT1F18o01; font-size: 12pt;">某些<span style="font-family: TT1F18o00; font-size: 12pt;">不可<span style="font-family: TT1F18o03; font-size: 12pt;">信<span style="font-family: TT1F18o00; font-size: 12pt;">的<span style="font-family: TT1F18o01; font-size: 12pt;">人<span style="font-family: TT1F18o00; font-size: 12pt;">可能会<span style="font-family: TT1F18o03; font-size: 12pt;">获<span style="font-family: TT1F18o00; font-size: 12pt;">得对你的<span style="font-family: TT1F18o01; font-size: 12pt;">类<span style="font-family: TT1F18o00; font-size: 12pt;">的<span style="font-family: TT1F18o01; font-size: 12pt;">实例<span style="font-family: TT1F18o00; font-size: 12pt;">的<span style="font-family: TT1F18o04; font-size: 12pt;">访<span style="font-family: TT1F18o00; font-size: 12pt;">问<span style="font-family: TT1F18o04; font-size: 12pt;">权<span style="font-family: TT1F18o00; font-size: 12pt;">,那么请不要使用与这
<span style="font-size: 12pt;">个<span style="font-family: TT1F18o01; font-size: 12pt;">类<span style="font-family: TT1F18o00; font-size: 12pt;">或它的<span style="font-family: TT1F18o01; font-size: 12pt;">实例自动关<span style="font-family: TT1F18o05; font-size: 12pt;">联<span style="font-family: TT1F18o00; font-size: 12pt;">的那<span style="font-family: TT1F18o01; font-size: 12pt;">些<span style="font-family: TT1F18o04; font-size: 12pt;">锁<span style="font-family: TT1F18o00; font-size: 12pt;">。取而代之的,你应该在一个<span style="font-family: TT1F18o04; font-size: 12pt;">私<span style="font-family: TT1F18o00; font-size: 12pt;">有的<span style="font-family: TT1F18o01; font-size: 12pt;">域<span style="font-family: TT1F18o00; font-size: 12pt;">中<span style="font-family: TT1F18o01; font-size: 12pt;">创建
<span style="font-family: TT1F18o00; font-size: 12pt;">一个<span style="font-family: TT1F18o01; font-size: 12pt;">单<span style="font-family: TT1F18o03; font-size: 12pt;">独<span style="font-family: TT1F18o00; font-size: 12pt;">的<span style="font-family: TT1F18o04; font-size: 12pt;">锁<span style="font-family: TT1F18o00; font-size: 12pt;">对<span style="font-family: TT1F18o01; font-size: 12pt;">象<span style="font-family: TT1F18o00; font-size: 12pt;">。在 <span style="font-family: TT1F18o01; font-size: 12pt;">5<span style="font-family: TT1F18o00; font-size: 12pt;">.0 <span style="font-family: TT1F18o01; font-size: 12pt;">版本发<span style="font-family: TT1F18o03; font-size: 12pt;">布<span style="font-family: TT1F18o00; font-size: 12pt;">之<span style="font-family: TT1F18o01; font-size: 12pt;">前<span style="font-family: TT1F18o00; font-size: 12pt;">,用于这种<span style="font-family: TT1F18o04; font-size: 12pt;">锁<span style="font-family: TT1F18o00; font-size: 12pt;">对<span style="font-family: TT1F18o01; font-size: 12pt;">象<span style="font-family: TT1F18o00; font-size: 12pt;">的正确<span style="font-family: TT1F18o01; font-size: 12pt;">类<span style="font-family: TT1F18o00; font-size: 12pt;">型只有
<span style="font-size: 12pt;">Ob<span style="font-family: TT1F18o01; font-size: 12pt;">j<span style="font-family: TT1F18o00; font-size: 12pt;">ect 或<span style="font-family: TT1F18o01; font-size: 12pt;">者<span style="font-family: TT1F18o00; font-size: 12pt;">它的<span style="font-family: TT1F18o01; font-size: 12pt;">某<span style="font-family: TT1F18o00; font-size: 12pt;">个<span style="font-family: TT1F18o03; font-size: 12pt;">普<span style="font-family: TT1F18o01; font-size: 12pt;">通<span style="font-family: TT1F18o00; font-size: 12pt;">的<span style="font-family: TT1F18o01; font-size: 12pt;">子类<span style="font-family: TT1F18o00; font-size: 12pt;">。 <span style="font-family: TT1F18o01; font-size: 12pt;">从 5<span style="font-family: TT1F18o00; font-size: 12pt;">.0 <span style="font-family: TT1F18o01; font-size: 12pt;">版本开始<span style="font-family: TT1F18o00; font-size: 12pt;">,<span style="font-size: 12pt;">j<span style="font-size: 12pt;">ava.util.concurrent.loc<span style="font-family: TT1F18o03; font-size: 12pt;">k<span style="font-family: TT1F18o00; font-size: 12pt;">s <span style="font-family: TT1F18o01; font-size: 12pt;">提供<span style="font-family: TT1F18o00; font-size: 12pt;">了 2 种可<span style="font-family: TT1F18o02; font-size: 12pt;">选<span style="font-family: TT1F18o00; font-size: 12pt;">方案: <span style="font-family: TT1F18o01; font-size: 12pt;">R<span style="font-family: TT1F18o00; font-size: 12pt;">eentrant<span style="font-family: TT1F18o01; font-size: 12pt;">L<span style="font-family: TT1F18o00; font-size: 12pt;">oc<span style="font-family: TT1F18o03; font-size: 12pt;">k <span style="font-family: TT1F18o00; font-size: 12pt;">和<span style="font-size: 12pt;">R<span style="font-size: 12pt;">eentrant<span style="font-family: TT1F18o01; font-size: 12pt;">R<span style="font-family: TT1F18o00; font-size: 12pt;">ead<span style="font-family: TT1F18o03; font-size: 12pt;">W<span style="font-family: TT1F18o00; font-size: 12pt;">rite<span style="font-family: TT1F18o01; font-size: 12pt;">L<span style="font-family: TT1F18o00; font-size: 12pt;">oc<span style="font-family: TT1F18o03; font-size: 12pt;">k<span style="font-family: TT1F18o00; font-size: 12pt;">。相对于 Ob<span style="font-family: TT1F18o01; font-size: 12pt;">j<span style="font-family: TT1F18o00; font-size: 12pt;">ect <span style="font-family: TT1F18o01; font-size: 12pt;">类<span style="font-family: TT1F18o00; font-size: 12pt;">,这 2 个<span style="font-family: TT1F18o01; font-size: 12pt;">类提供<span style="font-family: TT1F18o00; font-size: 12pt;">了更好的<span style="font-family: TT1F18o02; font-size: 12pt;">机<span style="font-family: TT1F18o01; font-size: 12pt;">动<span style="font-family: TT1F18o00; font-size: 12pt;">性,
<span style="font-size: 12pt;">但是它<span style="font-family: TT1F18o01; font-size: 12pt;">们<span style="font-family: TT1F18o00; font-size: 12pt;">使用起来<span style="font-family: TT1F18o01; font-size: 12pt;">也<span style="font-family: TT1F18o00; font-size: 12pt;">要更<span style="font-family: TT1F18o01; font-size: 12pt;">麻烦<span style="font-family: TT1F18o00; font-size: 12pt;">一<span style="font-family: TT1F18o01; font-size: 12pt;">点<span style="font-family: TT1F18o00; font-size: 12pt;">。它<span style="font-family: TT1F18o01; font-size: 12pt;">们<span style="font-family: TT1F18o00; font-size: 12pt;">不能被用在同<span style="font-family: TT1F18o02; font-size: 12pt;">步化<span style="font-family: TT1F18o00; font-size: 12pt;">的<span style="font-family: TT1F18o01; font-size: 12pt;">语<span style="font-family: TT1F18o00; font-size: 12pt;">句<span style="font-family: TT1F18o03; font-size: 12pt;">块
<span style="font-family: TT1F18o00; font-size: 12pt;">(s<span style="font-family: TT1F18o01; font-size: 12pt;">y<span style="font-family: TT1F18o00; font-size: 12pt;">nc<span style="font-family: TT1F18o01; font-size: 12pt;">h<span style="font-family: TT1F18o00; font-size: 12pt;">roni<span style="font-family: TT1F18o03; font-size: 12pt;">z<span style="font-family: TT1F18o00; font-size: 12pt;">ed bloc<span style="font-family: TT1F18o03; font-size: 12pt;">k<span style="font-family: TT1F18o00; font-size: 12pt;">)中,而且<span style="font-family: TT1F18o01; font-size: 12pt;">必<span style="font-family: TT1F18o02; font-size: 12pt;">须<span style="font-family: TT1F18o05; font-size: 12pt;">辅<span style="font-family: TT1F18o00; font-size: 12pt;">以 tr<span style="font-family: TT1F18o01; font-size: 12pt;">y<span style="font-family: TT1F18o00; font-size: 12pt;">-finall<span style="font-family: TT1F18o01; font-size: 12pt;">y 语<span style="font-family: TT1F18o00; font-size: 12pt;">句对其<span style="font-family: TT1F18o01; font-size: 12pt;">进<span style="font-family: TT1F18o00; font-size: 12pt;">行显式的<span style="font-family: TT1F18o03; font-size: 12pt;">获
<span style="font-family: TT1F18o00; font-size: 12pt;">取和<span style="font-family: TT1F18o01; font-size: 12pt;">释<span style="font-family: TT1F18o02; font-size: 12pt;">放<span style="font-family: TT1F18o00; font-size: 12pt;">。
<span style="font-size: 12pt;">订正这个程序最<span style="font-family: TT1F18o01; font-size: 12pt;">直接<span style="font-family: TT1F18o00; font-size: 12pt;">的方法是<span style="font-family: TT1F18o03; font-size: 12pt;">添<span style="font-family: TT1F18o00; font-size: 12pt;">加一个 Ob<span style="font-family: TT1F18o01; font-size: 12pt;">j<span style="font-family: TT1F18o00; font-size: 12pt;">ect <span style="font-family: TT1F18o01; font-size: 12pt;">类<span style="font-family: TT1F18o00; font-size: 12pt;">型的<span style="font-family: TT1F18o04; font-size: 12pt;">私<span style="font-family: TT1F18o00; font-size: 12pt;">有<span style="font-family: TT1F18o01; font-size: 12pt;">域<span style="font-family: TT1F18o00; font-size: 12pt;">作为<span style="font-family: TT1F18o04; font-size: 12pt;">锁<span style="font-family: TT1F18o00; font-size: 12pt;">,并且在
<span style="font-family: TT1F18o02; font-size: 12pt;">q<span style="font-family: TT1F18o00; font-size: 12pt;">uit 和 <span style="font-family: TT1F18o03; font-size: 12pt;">k<span style="font-family: TT1F18o00; font-size: 12pt;">eep<span style="font-family: TT1F18o03; font-size: 12pt;">W<span style="font-family: TT1F18o00; font-size: 12pt;">or<span style="font-family: TT1F18o03; font-size: 12pt;">k<span style="font-family: TT1F18o00; font-size: 12pt;">in<span style="font-family: TT1F18o01; font-size: 12pt;">g <span style="font-family: TT1F18o00; font-size: 12pt;">方法中对这个<span style="font-family: TT1F18o04; font-size: 12pt;">锁<span style="font-family: TT1F18o00; font-size: 12pt;">对<span style="font-family: TT1F18o01; font-size: 12pt;">象进<span style="font-family: TT1F18o00; font-size: 12pt;">行同<span style="font-family: TT1F18o02; font-size: 12pt;">步<span style="font-family: TT1F18o00; font-size: 12pt;">。 <span style="font-family: TT1F18o01; font-size: 12pt;">通过<span style="font-family: TT1F18o00; font-size: 12pt;">上述<span style="font-family: TT1F18o02; font-size: 12pt;">修改<span style="font-family: TT1F18o00; font-size: 12pt;">之后,该程
<span style="font-size: 12pt;">序就会<span style="font-family: TT1F18o01; font-size: 12pt;">打印出我们<span style="font-family: TT1F18o00; font-size: 12pt;">所<span style="font-family: TT1F18o01; font-size: 12pt;">期望<span style="font-family: TT1F18o00; font-size: 12pt;">的 <span style="font-family: TT1F18o01; font-size: 12pt;">B<span style="font-family: TT1F18o00; font-size: 12pt;">eer is <span style="font-family: TT1F18o01; font-size: 12pt;">g<span style="font-family: TT1F18o00; font-size: 12pt;">ood。可以看<span style="font-family: TT1F18o01; font-size: 12pt;">出<span style="font-family: TT1F18o00; font-size: 12pt;">,该程序能够产生正确行
<span style="font-size: 12pt;">为并不<span style="font-family: TT1F18o02; font-size: 12pt;">依赖<span style="font-family: TT1F18o00; font-size: 12pt;">于它<span style="font-family: TT1F18o01; font-size: 12pt;">必<span style="font-family: TT1F18o02; font-size: 12pt;">须<span style="font-family: TT1F18o03; font-size: 12pt;">遵<span style="font-family: TT1F18o01; font-size: 12pt;">从我们前<span style="font-family: TT1F18o00; font-size: 12pt;">面分<span style="font-family: TT1F18o01; font-size: 12pt;">析<span style="font-family: TT1F18o00; font-size: 12pt;">的时间<span style="font-family: TT1F18o05; font-size: 12pt;">轴<span style="font-family: TT1F18o00; font-size: 12pt;">:
<span style="font-size: 12pt; color: rgb(51, 51, 204);">private final Ob<span style="font-family: TT1F18o01; font-size: 12pt;">j<span style="font-family: TT1F18o00; font-size: 12pt;">ect loc<span style="font-family: TT1F18o03; font-size: 12pt;">k <span style="font-family: TT1F18o00; font-size: 12pt;">= ne<span style="font-family: TT1F18o01; font-size: 12pt;">w <span style="font-family: TT1F18o00; font-size: 12pt;">Ob<span style="font-family: TT1F18o01; font-size: 12pt;">j<span style="font-family: TT1F18o00; font-size: 12pt;">ect();
<span style="font-size: 12pt;">// <span style="font-family: TT1F18o01; font-size: 12pt;">I<span style="font-family: TT1F18o00; font-size: 12pt;">t<span style="font-family: TT1F18o02; font-size: 12pt;">' <span style="font-family: TT1F18o00; font-size: 12pt;">s <span style="font-family: TT1F18o02; font-size: 12pt;">q<span style="font-family: TT1F18o00; font-size: 12pt;">uittin<span style="font-family: TT1F18o01; font-size: 12pt;">g <span style="font-family: TT1F18o00; font-size: 12pt;">time<span style="font-family: TT1F18o01; font-size: 12pt;">, w<span style="font-family: TT1F18o00; font-size: 12pt;">ait for <span style="font-family: TT1F18o01; font-size: 12pt;">w<span style="font-family: TT1F18o00; font-size: 12pt;">or<span style="font-family: TT1F18o03; font-size: 12pt;">k<span style="font-family: TT1F18o00; font-size: 12pt;">er - <span style="font-family: TT1F18o01; font-size: 12pt;">C<span style="font-family: TT1F18o00; font-size: 12pt;">alled b<span style="font-family: TT1F18o01; font-size: 12pt;">y g<span style="font-family: TT1F18o00; font-size: 12pt;">ood boss
<span style="font-size: 12pt;">void <span style="font-family: TT1F18o02; font-size: 12pt;">q<span style="font-family: TT1F18o00; font-size: 12pt;">uit() t<span style="font-family: TT1F18o01; font-size: 12pt;">h<span style="font-family: TT1F18o00; font-size: 12pt;">ro</span><span style="font-size: 12pt;">w</span><span style="font-family: TT1F18o00; font-size: 12pt;">s </span><span style="font-size: 12pt;">I</span><span style="font-family: TT1F18o00; font-size: 12pt;">nterrupted</span><span style="font-size: 12pt;">E</span><span style="font-family: TT1F18o02; font-size: 12pt;">x</span><span style="font-family: TT1F18o00; font-size: 12pt;">ception{</span>
<span style="font-family: TT1F18o00; font-size: 12pt;">s</span><span style="font-size: 12pt;">y</span><span style="font-family: TT1F18o00; font-size: 12pt;">nc</span><span style="font-size: 12pt;">h</span><span style="font-family: TT1F18o00; font-size: 12pt;">roni</span><span style="font-family: TT1F18o03; font-size: 12pt;">z</span><span style="font-family: TT1F18o00; font-size: 12pt;">ed (loc</span><span style="font-family: TT1F18o03; font-size: 12pt;">k</span><span style="font-family: TT1F18o00; font-size: 12pt;">){</span>
<span style="font-family: TT1F18o02; font-size: 12pt;">q</span><span style="font-family: TT1F18o00; font-size: 12pt;">uittin</span><span style="font-size: 12pt;">g</span><span style="font-family: TT1F18o00; font-size: 12pt;">Time = true;</span>
<span style="font-size: 12pt;">j</span><span style="font-family: TT1F18o00; font-size: 12pt;">oin();</span>
<span style="font-family: TT1F18o00; font-size: 12pt;">}</span>
<span style="font-family: TT1F18o00; font-size: 12pt;">}</span>
<span style="font-family: TT1F18o00; font-size: 12pt;">// </span><span style="font-size: 12pt;">R</span><span style="font-family: TT1F18o00; font-size: 12pt;">escind </span><span style="font-family: TT1F18o02; font-size: 12pt;">q</span><span style="font-family: TT1F18o00; font-size: 12pt;">uittin</span><span style="font-size: 12pt;">g </span><span style="font-family: TT1F18o00; font-size: 12pt;">time - </span><span style="font-size: 12pt;">C</span><span style="font-family: TT1F18o00; font-size: 12pt;">alled b</span><span style="font-size: 12pt;">y </span><span style="font-family: TT1F18o00; font-size: 12pt;">evil boss</span>
<span style="font-family: TT1F18o00; font-size: 12pt;">void </span><span style="font-family: TT1F18o03; font-size: 12pt;">k</span><span style="font-family: TT1F18o00; font-size: 12pt;">eep</span><span style="font-family: TT1F18o03; font-size: 12pt;">W</span><span style="font-family: TT1F18o00; font-size: 12pt;">or</span><span style="font-family: TT1F18o03; font-size: 12pt;">k</span><span style="font-family: TT1F18o00; font-size: 12pt;">in</span><span style="font-size: 12pt;">g</span><span style="font-family: TT1F18o00; font-size: 12pt;">(){</span>
<span style="font-family: TT1F18o00; font-size: 12pt;">s</span><span style="font-size: 12pt;">y</span><span style="font-family: TT1F18o00; font-size: 12pt;">nc</span><span style="font-size: 12pt;">h</span><span style="font-family: TT1F18o00; font-size: 12pt;">roni</span><span style="font-family: TT1F18o03; font-size: 12pt;">z</span><span style="font-family: TT1F18o00; font-size: 12pt;">ed(loc</span><span style="font-family: TT1F18o03; font-size: 12pt;">k</span><span style="font-family: TT1F18o00; font-size: 12pt;">){</span>
<span style="font-family: TT1F18o02; font-size: 12pt;">q</span><span style="font-family: TT1F18o00; font-size: 12pt;">uittin</span><span style="font-size: 12pt;">g</span><span style="font-family: TT1F18o00; font-size: 12pt;">Time = false;</span>
<span style="font-family: TT1F18o00; font-size: 12pt;">}</span>
<span style="font-family: TT1F18o00; font-size: 12pt;">}</span><span style="font-size: 12pt; color: rgb(0, 0, 0);">另</span><span style="font-family: TT1F18o00; font-size: 12pt; color: rgb(0, 0, 0);">外一种可以</span><span style="font-family: TT1F18o02; font-size: 12pt; color: rgb(0, 0, 0);">修</span><span style="font-size: 12pt; color: rgb(0, 0, 0);">复</span><span style="font-family: TT1F18o00; font-size: 12pt; color: rgb(0, 0, 0);">这个程序的方法是</span><span style="font-family: TT1F18o02; font-size: 12pt; color: rgb(0, 0, 0);">让 </span><span style="font-family: TT1F18o03; font-size: 12pt; color: rgb(0, 0, 0);">W</span><span style="font-family: TT1F18o00; font-size: 12pt; color: rgb(0, 0, 0);">or</span><span style="font-family: TT1F18o03; font-size: 12pt; color: rgb(0, 0, 0);">k</span><span style="font-family: TT1F18o00; font-size: 12pt; color: rgb(0, 0, 0);">er </span><span style="font-size: 12pt; color: rgb(0, 0, 0);">类实现 R</span><span style="font-family: TT1F18o00; font-size: 12pt; color: rgb(0, 0, 0);">unnable 而不是</span><span style="font-family: TT1F18o02; font-size: 12pt; color: rgb(0, 0, 0);">扩展</span>
<span style="font-family: TT1F18o00; font-size: 12pt; color: rgb(0, 0, 0);">T</span><span style="font-size: 12pt; color: rgb(0, 0, 0);">h</span><span style="font-family: TT1F18o00; font-size: 12pt; color: rgb(0, 0, 0);">read,然后在</span><span style="font-size: 12pt; color: rgb(0, 0, 0);">创建</span><span style="font-family: TT1F18o00; font-size: 12pt; color: rgb(0, 0, 0);">每个</span><span style="font-size: 12pt; color: rgb(0, 0, 0);">工人线</span><span style="font-family: TT1F18o00; font-size: 12pt; color: rgb(0, 0, 0);">程的时</span><span style="font-size: 12pt; color: rgb(0, 0, 0);">候</span><span style="font-family: TT1F18o00; font-size: 12pt; color: rgb(0, 0, 0);">都使用 T</span><span style="font-size: 12pt; color: rgb(0, 0, 0);">h</span><span style="font-family: TT1F18o00; font-size: 12pt; color: rgb(0, 0, 0);">read(</span><span style="font-size: 12pt; color: rgb(0, 0, 0);">R</span><span style="font-family: TT1F18o00; font-size: 12pt; color: rgb(0, 0, 0);">unnable) </span><span style="font-size: 12pt; color: rgb(0, 0, 0);">构造器</span><span style="font-family: TT1F18o00; font-size: 12pt; color: rgb(0, 0, 0);">。这</span><span style="font-size: 12pt; color: rgb(0, 0, 0);">样</span><span style="font-family: TT1F18o00; font-size: 12pt; color: rgb(0, 0, 0);">可以将每个 </span><span style="font-family: TT1F18o03; font-size: 12pt; color: rgb(0, 0, 0);">W</span><span style="font-family: TT1F18o00; font-size: 12pt; color: rgb(0, 0, 0);">or</span><span style="font-family: TT1F18o03; font-size: 12pt; color: rgb(0, 0, 0);">k</span><span style="font-family: TT1F18o00; font-size: 12pt; color: rgb(0, 0, 0);">er </span><span style="font-size: 12pt; color: rgb(0, 0, 0);">实例</span><span style="font-family: TT1F18o00; font-size: 12pt; color: rgb(0, 0, 0);">上的</span><span style="font-family: TT1F18o04; font-size: 12pt; color: rgb(0, 0, 0);">锁</span><span style="font-family: TT1F18o00; font-size: 12pt; color: rgb(0, 0, 0);">与其</span><span style="font-size: 12pt; color: rgb(0, 0, 0);">线</span><span style="font-family: TT1F18o00; font-size: 12pt; color: rgb(0, 0, 0);">程上的</span><span style="font-family: TT1F18o04; font-size: 12pt; color: rgb(0, 0, 0);">锁</span><span style="font-size: 12pt; color: rgb(0, 0, 0);">进</span><span style="font-family: TT1F18o00; font-size: 12pt; color: rgb(0, 0, 0);">行</span><span style="font-size: 12pt; color: rgb(0, 0, 0);">解</span><span style="font-family: TT1F18o04; font-size: 12pt; color: rgb(0, 0, 0);">耦</span><span style="font-family: TT1F18o00; font-size: 12pt; color: rgb(0, 0, 0);">。这是一个</span><span style="font-size: 12pt; color: rgb(0, 0, 0);">规</span><span style="font-family: TT1F18o03; font-size: 12pt; color: rgb(0, 0, 0);">模</span><span style="font-family: TT1F18o02; font-size: 12pt; color: rgb(0, 0, 0);">稍</span><span style="font-size: 12pt; color: rgb(0, 0, 0);">大</span>
<span style="font-family: TT1F18o00; font-size: 12pt; color: rgb(0, 0, 0);">一</span><span style="font-size: 12pt; color: rgb(0, 0, 0);">些</span><span style="font-family: TT1F18o00; font-size: 12pt; color: rgb(0, 0, 0);">的</span><span style="font-size: 12pt; color: rgb(0, 0, 0);">重构</span><span style="font-family: TT1F18o00; font-size: 12pt; color: rgb(0, 0, 0);">。</span>
<span style="font-family: TT1F18o00; font-size: 12pt; color: rgb(0, 0, 0);">正如</span><span style="font-family: TT1F18o02; font-size: 12pt; color: rgb(0, 0, 0);">库</span><span style="font-size: 12pt; color: rgb(0, 0, 0);">类</span><span style="font-family: TT1F18o00; font-size: 12pt; color: rgb(0, 0, 0);">对</span><span style="font-family: TT1F18o04; font-size: 12pt; color: rgb(0, 0, 0);">锁</span><span style="font-family: TT1F18o00; font-size: 12pt; color: rgb(0, 0, 0);">的使用会</span><span style="font-family: TT1F18o02; font-size: 12pt; color: rgb(0, 0, 0);">干</span><span style="font-family: TT1F18o05; font-size: 12pt; color: rgb(0, 0, 0);">扰</span><span style="font-family: TT1F18o00; font-size: 12pt; color: rgb(0, 0, 0);">应用程序一</span><span style="font-size: 12pt; color: rgb(0, 0, 0);">样</span><span style="font-family: TT1F18o00; font-size: 12pt; color: rgb(0, 0, 0);">,应用程序中对</span><span style="font-family: TT1F18o04; font-size: 12pt; color: rgb(0, 0, 0);">锁</span><span style="font-family: TT1F18o00; font-size: 12pt; color: rgb(0, 0, 0);">的使用</span><span style="font-size: 12pt; color: rgb(0, 0, 0);">也</span><span style="font-family: TT1F18o00; font-size: 12pt; color: rgb(0, 0, 0);">会</span><span style="font-family: TT1F18o02; font-size: 12pt; color: rgb(0, 0, 0);">干</span><span style="font-family: TT1F18o05; font-size: 12pt; color: rgb(0, 0, 0);">扰</span><span style="font-family: TT1F18o02; font-size: 12pt; color: rgb(0, 0, 0);">库</span><span style="font-size: 12pt; color: rgb(0, 0, 0);">类</span><span style="font-family: TT1F18o00; font-size: 12pt; color: rgb(0, 0, 0);">。 </span><span style="font-size: 12pt; color: rgb(0, 0, 0);">例</span><span style="font-family: TT1F18o00; font-size: 12pt; color: rgb(0, 0, 0);">如,在</span><span style="font-family: TT1F18o05; font-size: 12pt; color: rgb(0, 0, 0);">迄</span><span style="font-family: TT1F18o04; font-size: 12pt; color: rgb(0, 0, 0);">今</span><span style="font-family: TT1F18o00; font-size: 12pt; color: rgb(0, 0, 0);">为止</span><span style="font-size: 12pt; color: rgb(0, 0, 0);">发</span><span style="font-family: TT1F18o03; font-size: 12pt; color: rgb(0, 0, 0);">布</span><span style="font-family: TT1F18o00; font-size: 12pt; color: rgb(0, 0, 0);">的所有</span><span style="font-size: 12pt; color: rgb(0, 0, 0);">版本</span><span style="font-family: TT1F18o00; font-size: 12pt; color: rgb(0, 0, 0);">的 JD</span><span style="font-size: 12pt; color: rgb(0, 0, 0);">K</span><span style="font-family: TT1F18o00; font-size: 12pt; color: rgb(0, 0, 0);">(包</span><span style="font-family: TT1F18o02; font-size: 12pt; color: rgb(0, 0, 0);">括 </span><span style="font-size: 12pt; color: rgb(0, 0, 0);">5</span><span style="font-family: TT1F18o00; font-size: 12pt; color: rgb(0, 0, 0);">.0 </span><span style="font-size: 12pt; color: rgb(0, 0, 0);">版本</span><span style="font-family: TT1F18o00; font-size: 12pt; color: rgb(0, 0, 0);">)中,为了</span><span style="font-size: 12pt; color: rgb(0, 0, 0);">创建</span><span style="font-family: TT1F18o00; font-size: 12pt; color: rgb(0, 0, 0);">一</span>
<span style="font-family: TT1F18o00; font-size: 12pt; color: rgb(0, 0, 0);">个</span><span style="font-size: 12pt; color: rgb(0, 0, 0);">新</span><span style="font-family: TT1F18o00; font-size: 12pt; color: rgb(0, 0, 0);">的 T</span><span style="font-size: 12pt; color: rgb(0, 0, 0);">h</span><span style="font-family: TT1F18o00; font-size: 12pt; color: rgb(0, 0, 0);">read </span><span style="font-size: 12pt; color: rgb(0, 0, 0);">实例</span><span style="font-family: TT1F18o00; font-size: 12pt; color: rgb(0, 0, 0);">, </span><span style="font-size: 12pt; color: rgb(0, 0, 0);">系统</span><span style="font-family: TT1F18o00; font-size: 12pt; color: rgb(0, 0, 0);">都会</span><span style="font-size: 12pt; color: rgb(0, 0, 0);">去</span><span style="font-family: TT1F18o03; font-size: 12pt; color: rgb(0, 0, 0);">获</span><span style="font-family: TT1F18o00; font-size: 12pt; color: rgb(0, 0, 0);">取 T</span><span style="font-size: 12pt; color: rgb(0, 0, 0);">h</span><span style="font-family: TT1F18o00; font-size: 12pt; color: rgb(0, 0, 0);">read </span><span style="font-size: 12pt; color: rgb(0, 0, 0);">类</span><span style="font-family: TT1F18o00; font-size: 12pt; color: rgb(0, 0, 0);">上的</span><span style="font-family: TT1F18o04; font-size: 12pt; color: rgb(0, 0, 0);">锁</span><span style="font-family: TT1F18o00; font-size: 12pt; color: rgb(0, 0, 0);">。而</span><span style="font-size: 12pt; color: rgb(0, 0, 0);">执</span><span style="font-family: TT1F18o00; font-size: 12pt; color: rgb(0, 0, 0);">行下面的代</span><span style="font-family: TT1F18o02; font-size: 12pt; color: rgb(0, 0, 0);">码</span><span style="font-family: TT1F18o00; font-size: 12pt; color: rgb(0, 0, 0);">就可</span>
<span style="font-family: TT1F18o00; font-size: 12pt; color: rgb(0, 0, 0);">以</span><span style="font-family: TT1F18o04; font-size: 12pt; color: rgb(0, 0, 0);">阻</span><span style="font-family: TT1F18o00; font-size: 12pt; color: rgb(0, 0, 0);">止任何</span><span style="font-size: 12pt; color: rgb(0, 0, 0);">新线</span><span style="font-family: TT1F18o00; font-size: 12pt; color: rgb(0, 0, 0);">程的</span><span style="font-size: 12pt; color: rgb(0, 0, 0);">创建</span><span style="font-family: TT1F18o00; font-size: 12pt; color: rgb(0, 0, 0);">:</span>
<span style="font-family: TT1F18o00; font-size: 12pt;">s</span><span style="font-size: 12pt;">y</span><span style="font-family: TT1F18o00; font-size: 12pt;">nc</span><span style="font-size: 12pt;">h</span><span style="font-family: TT1F18o00; font-size: 12pt;">roni</span><span style="font-family: TT1F18o03; font-size: 12pt;">z</span><span style="font-family: TT1F18o00; font-size: 12pt;">ed(T</span><span style="font-size: 12pt;">h</span><span style="font-family: TT1F18o00; font-size: 12pt;">read.class){</span>
<span style="font-family: TT1F18o00; font-size: 12pt;">T</span><span style="font-size: 12pt;">h</span><span style="font-family: TT1F18o00; font-size: 12pt;">read.sleep(</span><span style="font-size: 12pt;">L</span><span style="font-family: TT1F18o00; font-size: 12pt;">on</span><span style="font-size: 12pt;">g</span><span style="font-family: TT1F18o00; font-size: 12pt;">. </span><span style="font-size: 12pt;">M</span><span style="font-family: TT1F18o00; font-size: 12pt;">A</span><span style="font-family: TT1F18o02; font-size: 12pt;">X</span><span style="font-size: 12pt;">_</span><span style="font-family: TT1F18o03; font-size: 12pt;">V</span><span style="font-family: TT1F18o00; font-size: 12pt;">A</span><span style="font-size: 12pt;">L</span><span style="font-family: TT1F18o02; font-size: 12pt;">U</span><span style="font-size: 12pt;">E</span><span style="font-family: TT1F18o00; font-size: 12pt;">);</span>
<span style="font-family: TT1F18o00; font-size: 12pt;">}</span>
<span style="font-family: TT1F18o00; font-size: 12pt; color: rgb(0, 0, 0);">总之, </span><span style="font-family: TT1F18o02; font-size: 12pt; color: rgb(0, 0, 0);">永远</span><span style="font-family: TT1F18o00; font-size: 12pt; color: rgb(0, 0, 0);">不要</span><span style="font-family: TT1F18o02; font-size: 12pt; color: rgb(0, 0, 0);">假</span><span style="font-size: 12pt; color: rgb(0, 0, 0);">设</span><span style="font-family: TT1F18o02; font-size: 12pt; color: rgb(0, 0, 0);">库</span><span style="font-size: 12pt; color: rgb(0, 0, 0);">类</span><span style="font-family: TT1F18o00; font-size: 12pt; color: rgb(0, 0, 0);">会(或</span><span style="font-size: 12pt; color: rgb(0, 0, 0);">者</span><span style="font-family: TT1F18o00; font-size: 12pt; color: rgb(0, 0, 0);">不会)对它的</span><span style="font-family: TT1F18o04; font-size: 12pt; color: rgb(0, 0, 0);">锁</span><span style="font-size: 12pt; color: rgb(0, 0, 0);">做某些事</span><span style="font-family: TT1F18o02; font-size: 12pt; color: rgb(0, 0, 0);">情</span><span style="font-family: TT1F18o00; font-size: 12pt; color: rgb(0, 0, 0);">。为了</span><span style="font-family: TT1F18o03; font-size: 12pt; color: rgb(0, 0, 0);">隔离</span><span style="font-family: TT1F18o00; font-size: 12pt; color: rgb(0, 0, 0);">你</span><span style="font-size: 12pt; color: rgb(0, 0, 0);">自 </span><span style="font-family: TT1F18o03; font-size: 12pt; color: rgb(0, 0, 0);">己</span>
<span style="font-family: TT1F18o00; font-size: 12pt; color: rgb(0, 0, 0);">的程序与</span><span style="font-family: TT1F18o02; font-size: 12pt; color: rgb(0, 0, 0);">库</span><span style="font-size: 12pt; color: rgb(0, 0, 0);">类</span><span style="font-family: TT1F18o00; font-size: 12pt; color: rgb(0, 0, 0);">对</span><span style="font-family: TT1F18o04; font-size: 12pt; color: rgb(0, 0, 0);">锁</span><span style="font-family: TT1F18o00; font-size: 12pt; color: rgb(0, 0, 0);">的使用,除了那</span><span style="font-size: 12pt; color: rgb(0, 0, 0);">些</span><span style="font-family: TT1F18o03; font-size: 12pt; color: rgb(0, 0, 0);">专</span><span style="font-family: TT1F18o04; font-size: 12pt; color: rgb(0, 0, 0);">门</span><span style="font-size: 12pt; color: rgb(0, 0, 0);">设</span><span style="font-family: TT1F18o00; font-size: 12pt; color: rgb(0, 0, 0);">计用来被</span><span style="font-family: TT1F18o02; font-size: 12pt; color: rgb(0, 0, 0);">继承</span><span style="font-family: TT1F18o00; font-size: 12pt; color: rgb(0, 0, 0);">的</span><span style="font-family: TT1F18o02; font-size: 12pt; color: rgb(0, 0, 0);">库</span><span style="font-size: 12pt; color: rgb(0, 0, 0);">类</span><span style="font-family: TT1F18o00; font-size: 12pt; color: rgb(0, 0, 0);">之外,请</span><span style="font-family: TT1F18o02; font-size: 12pt; color: rgb(0, 0, 0);">避免继</span>
<span style="font-family: TT1F18o02; font-size: 12pt; color: rgb(0, 0, 0);">承</span><span style="font-family: TT1F18o00; font-size: 12pt; color: rgb(0, 0, 0);">其它</span><span style="font-family: TT1F18o02; font-size: 12pt; color: rgb(0, 0, 0);">库</span><span style="font-size: 12pt; color: rgb(0, 0, 0);">类 [E</span><span style="font-family: TT1F18o00; font-size: 12pt; color: rgb(0, 0, 0);">J </span><span style="font-size: 12pt; color: rgb(0, 0, 0);">I</span><span style="font-family: TT1F18o00; font-size: 12pt; color: rgb(0, 0, 0);">tem 1</span><span style="font-size: 12pt; color: rgb(0, 0, 0);">5] </span><span style="font-family: TT1F18o00; font-size: 12pt; color: rgb(0, 0, 0);">。为了确</span><span style="font-size: 12pt; color: rgb(0, 0, 0);">保</span><span style="font-family: TT1F18o00; font-size: 12pt; color: rgb(0, 0, 0);">你的</span><span style="font-family: TT1F18o04; font-size: 12pt; color: rgb(0, 0, 0);">锁</span><span style="font-family: TT1F18o00; font-size: 12pt; color: rgb(0, 0, 0);">不会</span><span style="font-size: 12pt; color: rgb(0, 0, 0);">遭受</span><span style="font-family: TT1F18o00; font-size: 12pt; color: rgb(0, 0, 0);">外</span><span style="font-size: 12pt; color: rgb(0, 0, 0);">部</span><span style="font-family: TT1F18o00; font-size: 12pt; color: rgb(0, 0, 0);">的</span><span style="font-family: TT1F18o02; font-size: 12pt; color: rgb(0, 0, 0);">干</span><span style="font-family: TT1F18o05; font-size: 12pt; color: rgb(0, 0, 0);">扰</span><span style="font-family: TT1F18o00; font-size: 12pt; color: rgb(0, 0, 0);">,可以将它</span><span style="font-size: 12pt; color: rgb(0, 0, 0);">们</span><span style="font-size: 12pt; color: rgb(0, 0, 0);">设</span><span style="font-family: TT1F18o00; font-size: 12pt; color: rgb(0, 0, 0);">为</span><span style="font-family: TT1F18o04; font-size: 12pt; color: rgb(0, 0, 0);">私</span><span style="font-family: TT1F18o00; font-size: 12pt; color: rgb(0, 0, 0);">有以</span><span style="font-family: TT1F18o04; font-size: 12pt; color: rgb(0, 0, 0);">阻</span><span style="font-family: TT1F18o00; font-size: 12pt; color: rgb(0, 0, 0);">止其他</span><span style="font-size: 12pt; color: rgb(0, 0, 0);">人</span><span style="font-family: TT1F18o00; font-size: 12pt; color: rgb(0, 0, 0);">对它</span><span style="font-size: 12pt; color: rgb(0, 0, 0);">们</span><span style="font-family: TT1F18o00; font-size: 12pt; color: rgb(0, 0, 0);">的</span><span style="font-family: TT1F18o04; font-size: 12pt; color: rgb(0, 0, 0);">访</span><span style="font-family: TT1F18o00; font-size: 12pt; color: rgb(0, 0, 0);">问。</span>
<span style="font-family: TT1F18o00; font-size: 12pt; color: rgb(0, 0, 0);">对于</span><span style="font-size: 12pt; color: rgb(0, 0, 0);">语言设</span><span style="font-family: TT1F18o00; font-size: 12pt; color: rgb(0, 0, 0);">计</span><span style="font-size: 12pt; color: rgb(0, 0, 0);">者</span><span style="font-family: TT1F18o00; font-size: 12pt; color: rgb(0, 0, 0);">来说,需要考虑的是为每个对</span><span style="font-size: 12pt; color: rgb(0, 0, 0);">象</span><span style="font-family: TT1F18o00; font-size: 12pt; color: rgb(0, 0, 0);">都</span><span style="font-size: 12pt; color: rgb(0, 0, 0);">关</span><span style="font-family: TT1F18o05; font-size: 12pt; color: rgb(0, 0, 0);">联</span><span style="font-family: TT1F18o00; font-size: 12pt; color: rgb(0, 0, 0);">一个</span><span style="font-family: TT1F18o04; font-size: 12pt; color: rgb(0, 0, 0);">锁</span><span style="font-family: TT1F18o00; font-size: 12pt; color: rgb(0, 0, 0);">是否是合</span><span style="font-family: TT1F18o03; font-size: 12pt; color: rgb(0, 0, 0);">适</span><span style="font-family: TT1F18o00; font-size: 12pt; color: rgb(0, 0, 0);">的。如</span>
<span style="font-family: TT1F18o00; font-size: 12pt; color: rgb(0, 0, 0);">果你</span><span style="font-size: 12pt; color: rgb(0, 0, 0);">决</span><span style="font-family: TT1F18o00; font-size: 12pt; color: rgb(0, 0, 0);">定这么</span><span style="font-size: 12pt; color: rgb(0, 0, 0);">做</span><span style="font-family: TT1F18o00; font-size: 12pt; color: rgb(0, 0, 0);">了 ,就需要考虑</span><span style="font-size: 12pt; color: rgb(0, 0, 0);">限制</span><span style="font-family: TT1F18o00; font-size: 12pt; color: rgb(0, 0, 0);">对这</span><span style="font-size: 12pt; color: rgb(0, 0, 0);">些</span><span style="font-family: TT1F18o04; font-size: 12pt; color: rgb(0, 0, 0);">锁</span><span style="font-family: TT1F18o00; font-size: 12pt; color: rgb(0, 0, 0);">的</span><span style="font-family: TT1F18o04; font-size: 12pt; color: rgb(0, 0, 0);">访</span><span style="font-family: TT1F18o00; font-size: 12pt; color: rgb(0, 0, 0);">问。在 Java 中, </span><span style="font-family: TT1F18o04; font-size: 12pt; color: rgb(0, 0, 0);">锁</span><span style="font-size: 12pt; color: rgb(0, 0, 0);">实</span><span style="font-family: TT1F18o02; font-size: 12pt; color: rgb(0, 0, 0);">际</span><span style="font-family: TT1F18o00; font-size: 12pt; color: rgb(0, 0, 0);">上是</span>
<span style="font-family: TT1F18o00; font-size: 12pt; color: rgb(0, 0, 0);">对</span><span style="font-size: 12pt; color: rgb(0, 0, 0);">象</span><span style="font-family: TT1F18o00; font-size: 12pt; color: rgb(0, 0, 0);">的</span><span style="font-family: TT1F18o03; font-size: 12pt; color: rgb(0, 0, 0);">公共</span><span style="font-family: TT1F18o02; font-size: 12pt; color: rgb(0, 0, 0);">属</span><span style="font-family: TT1F18o00; font-size: 12pt; color: rgb(0, 0, 0);">性,或</span><span style="font-size: 12pt; color: rgb(0, 0, 0);">许</span><span style="font-family: TT1F18o00; font-size: 12pt; color: rgb(0, 0, 0);">它</span><span style="font-size: 12pt; color: rgb(0, 0, 0);">们变</span><span style="font-family: TT1F18o00; font-size: 12pt; color: rgb(0, 0, 0);">为</span><span style="font-family: TT1F18o04; font-size: 12pt; color: rgb(0, 0, 0);">私</span><span style="font-family: TT1F18o00; font-size: 12pt; color: rgb(0, 0, 0);">有的会更有意义。同时请</span><span style="font-family: TT1F18o02; font-size: 12pt; color: rgb(0, 0, 0);">记住</span><span style="font-family: TT1F18o00; font-size: 12pt; color: rgb(0, 0, 0);">在 Java </span><span style="font-size: 12pt; color: rgb(0, 0, 0);">语言</span><span style="font-family: TT1F18o00; font-size: 12pt; color: rgb(0, 0, 0);">中,</span>
<span style="font-family: TT1F18o00; font-size: 12pt; color: rgb(0, 0, 0);">一个对</span><span style="font-size: 12pt; color: rgb(0, 0, 0);">象实</span><span style="font-family: TT1F18o02; font-size: 12pt; color: rgb(0, 0, 0);">际</span><span style="font-family: TT1F18o00; font-size: 12pt; color: rgb(0, 0, 0);">上就是一个</span><span style="font-family: TT1F18o04; font-size: 12pt; color: rgb(0, 0, 0);">锁</span><span style="font-family: TT1F18o00; font-size: 12pt; color: rgb(0, 0, 0);">:你在对</span><span style="font-size: 12pt; color: rgb(0, 0, 0);">象本</span><span style="font-family: TT1F18o02; font-size: 12pt; color: rgb(0, 0, 0);">身</span><span style="font-family: TT1F18o00; font-size: 12pt; color: rgb(0, 0, 0);">之上</span><span style="font-size: 12pt; color: rgb(0, 0, 0);">进</span><span style="font-family: TT1F18o00; font-size: 12pt; color: rgb(0, 0, 0);">行同</span><span style="font-family: TT1F18o02; font-size: 12pt; color: rgb(0, 0, 0);">步</span><span style="font-family: TT1F18o00; font-size: 12pt; color: rgb(0, 0, 0);">。如果每个对</span><span style="font-size: 12pt; color: rgb(0, 0, 0);">象</span><span style="font-family: TT1F18o00; font-size: 12pt; color: rgb(0, 0, 0);">都有一</span>
<span style="font-family: TT1F18o00; font-size: 12pt; color: rgb(0, 0, 0);">个</span><span style="font-family: TT1F18o04; font-size: 12pt; color: rgb(0, 0, 0);">锁</span><span style="font-family: TT1F18o00; font-size: 12pt; color: rgb(0, 0, 0);">,而且你可以</span><span style="font-size: 12pt; color: rgb(0, 0, 0);">通过</span><span style="font-family: TT1F18o00; font-size: 12pt; color: rgb(0, 0, 0);">调用一个</span><span style="font-family: TT1F18o04; font-size: 12pt; color: rgb(0, 0, 0);">访</span><span style="font-family: TT1F18o00; font-size: 12pt; color: rgb(0, 0, 0);">问</span><span style="font-size: 12pt; color: rgb(0, 0, 0);">器</span><span style="font-family: TT1F18o00; font-size: 12pt; color: rgb(0, 0, 0);">方法来</span><span style="font-family: TT1F18o03; font-size: 12pt; color: rgb(0, 0, 0);">获</span><span style="font-family: TT1F18o00; font-size: 12pt; color: rgb(0, 0, 0);">得它,这</span><span style="font-size: 12pt; color: rgb(0, 0, 0);">样</span><span style="font-family: TT1F18o00; font-size: 12pt; color: rgb(0, 0, 0);">或</span><span style="font-size: 12pt; color: rgb(0, 0, 0);">许</span><span style="font-family: TT1F18o00; font-size: 12pt; color: rgb(0, 0, 0);">会更有意义。</span><br style="orphans: 2; text-align: -webkit-auto; widows: 2;" /></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span>

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值