银行两操作员同时操作同一账户就是典型的例子。这就是典型的并发问题。其它线程将无法执行该对象的所有synchronized块。用法2同用法1, 但更能体现synchronized用法的本质。在JAVA中,sychronized关键字用来对一个对象加锁。对于Java就是说:Java中的锁是针对同一个对象的,不是针对class的。而t2和t8则没有关系,即使m2上的锁释放了,t1,t2,t3可能仍要在m1上排队。原因无它,不是同一个厕位耳。也就是说notify后,不是其它线程马上可以进入封锁区域活动了,而是必须还要等notify代码所在的封锁区域执行完毕从而释放锁以后,其它线程才可进入。它是JDK1.5中新增内容。简而言之,就是对wait的线程进行了分类。jdk1.5中的阻塞队列可实现同样功能。
暂无评论