多线程总结2(死锁等问题)
2013-08-29 23:01
281 查看
线程间通讯:
其实就是多个线程操作同一个资源
但是操作动作不同
处理安全问题:
1,同步处理
2,使用同一个锁
(视频3)等待唤醒机制:
wait()等待,notify()唤醒,等都必须在同步中(锁)进行。
因为要对持有监视器(锁)的线程操作,所以要使用在同步中,因为只有同步才具有锁
为什么这些操作线程的方法要定义Object类中呢?
因为这些方法在操作同步中线程时,都必须要表示他们所才做线程的只有锁,
只有同一个锁上的被等待线程,可以被同一个锁上notify唤醒,
不可以被不同锁中的线程进行唤醒。
也就是说,等待和唤醒必须是同一个锁。
而锁可以是任意对象,所以可以被任意对象调用的方法定义Object类中
(视频4)当出现2个以上线程时,则用IF判断无法满足,必须要用while判断,并且用nodifyAll()来唤醒其他线程。当苏醒时如果用if则直接往下执行,如果用while 则需要返回在判断一次。如果使用while 判断时只单单使用nodify()唤醒最早被wait()的线程时,如果是本类线程则会导致全部挂起状态。
JDK1.5中提供了多线程升级解决方案,
将同步Synchronized替换成现实 Lock操作。
将Object中的wait,notify notifyAll,替换成了Condition对象。
该对象可以Lock锁,进行获取。
该实例中,实现了本方唤醒对方操作。
stop方法已经过时。
如何停止线程?
只有一种,run方法结束。
开启多线程运行,运行代码通常是循环结构。
只要控制住循环,就可以让run方法结束,也就是线程结束。
当没有指定的方式让冻结的线程回复到运行状态时,这时需要对冻结进行清除。
强制让线程回复到运行状态中来
join:
当A线程执行到了B线程的.join()方法时,A就会等待,等到B线程都执行完,A才会执行。
join可以用来临时加入线程执行
其实就是多个线程操作同一个资源
但是操作动作不同
处理安全问题:
1,同步处理
2,使用同一个锁
(视频3)等待唤醒机制:
wait()等待,notify()唤醒,等都必须在同步中(锁)进行。
因为要对持有监视器(锁)的线程操作,所以要使用在同步中,因为只有同步才具有锁
为什么这些操作线程的方法要定义Object类中呢?
因为这些方法在操作同步中线程时,都必须要表示他们所才做线程的只有锁,
只有同一个锁上的被等待线程,可以被同一个锁上notify唤醒,
不可以被不同锁中的线程进行唤醒。
也就是说,等待和唤醒必须是同一个锁。
而锁可以是任意对象,所以可以被任意对象调用的方法定义Object类中
(视频4)当出现2个以上线程时,则用IF判断无法满足,必须要用while判断,并且用nodifyAll()来唤醒其他线程。当苏醒时如果用if则直接往下执行,如果用while 则需要返回在判断一次。如果使用while 判断时只单单使用nodify()唤醒最早被wait()的线程时,如果是本类线程则会导致全部挂起状态。
JDK1.5中提供了多线程升级解决方案,
将同步Synchronized替换成现实 Lock操作。
将Object中的wait,notify notifyAll,替换成了Condition对象。
该对象可以Lock锁,进行获取。
该实例中,实现了本方唤醒对方操作。
stop方法已经过时。
如何停止线程?
只有一种,run方法结束。
开启多线程运行,运行代码通常是循环结构。
只要控制住循环,就可以让run方法结束,也就是线程结束。
当没有指定的方式让冻结的线程回复到运行状态时,这时需要对冻结进行清除。
强制让线程回复到运行状态中来
join:
当A线程执行到了B线程的.join()方法时,A就会等待,等到B线程都执行完,A才会执行。
join可以用来临时加入线程执行
相关文章推荐
- 黑马程序员———多线程和死锁问题总结
- java多线程(八)-死锁问题和java多线程总结
- 面试总结4--多线程问题
- 40个Java多线程问题总结
- 40个Java多线程问题总结
- java 多线程 死锁 哲学家就餐问题
- Java【多线程知识总结(7)】多线程同步问题-关于synchronized代码块和synchronized方法的应用
- java语言基础(93)——多线程中的死锁问题
- 进程、线程知识点总结和同步(消费者生产者,读者写者三类问题)、互斥、异步、并发、并行、死锁、活锁的总结
- java多线程总结六:经典生产者消费者问题实现
- 多线程死锁问题
- [原创]MFC中的多线程处理问题总结
- 40个Java多线程问题总结
- 40个Java多线程问题总结
- java例程练习(多线程[死锁问题])
- 多线程死锁问题
- web开发中的多线程死锁问题,避免死锁
- 40个Java多线程问题总结
- 多线程问题总结--面试(二)
- JAVA基础再回首(二十五)——Lock锁的使用、死锁问题、多线程生产者和消费者、线程池、匿名内部类使用多线程、定时器、面试题