摘要: 代码清单: 输出结果如下: 从上述输出可以看到,每个线程终止的前提是前驱线程的终止,每个线程等待前驱线程终止后,才从join方法返回。 代码中创建了10个线程,0~9,每个线程调用前一个线程的join方法,也就是线程0结束了,线程1才能从join方法中返回,而线程0需要等待main线程结束。 看一下 阅读全文
posted @ 2016-06-18 15:34 SonoFelice 阅读(265) 评论(0) 推荐(0) 编辑
摘要: 代码示例: 输出如下: 调用wait() notify() notifyAll()方法时需要注意的细节: 1)使用wait() notify() notifyAll() 时需要先对调用对象加锁; 2)调用wait()方法后,线程状态由RUNNING 变为WAITING,并将当前线程放置到对象的等待队 阅读全文
posted @ 2016-06-18 14:24 SonoFelice 阅读(2122) 评论(0) 推荐(0) 编辑
摘要: volatile关键字: 可以用来修饰字段(成员变量),就是告知程序任何对该变量的访问均需要从共享内存中获取,而对它的改变必须同步刷新回共享内存,它能保证所有线程对变量访问的可见性。 synchronized关键字: 可以修饰方法或以同步块的形式来进行使用,它主要确保多个线程在同一时刻,只能有一个线 阅读全文
posted @ 2016-06-18 10:49 SonoFelice 阅读(355) 评论(0) 推荐(0) 编辑