14.2线程死锁
package cn.chen.threadsecurity;
/*
java 中同步機制解決了線程安全問題,但是也同時引發(fā)了死鎖現(xiàn)象。死鎖現(xiàn)象出現(xiàn)的原因:1.存在兩個或者兩個以上的線程。2.存在兩個或者兩個以上的共享資源。死鎖解決方法:沒有完全解決,只能是盡可能避免發(fā)生。* */
class Deadlock extends Thread{public Deadlock(String name){super(name);}@Overridepublic void run() {// TODO Auto-generated method stubsuper.run();if("張三".equals(Thread.currentThread().getName())){synchronized ("遙控器") {//鎖關閉狀態(tài)System.out.println("張三,拿到了遙控器準備去拿電池");synchronized ("電池") {System.out.println("開空調");}}}else if ("李四".equals(Thread.currentThread().getName())){synchronized ("電池") {//鎖關閉System.out.println("張三,拿到了遙控器準備去拿電池");synchronized ("遙控器") {System.out.println("開空調");}}}}}
public class DeadlockDemo {public static void main(String[] args) {// TODO Auto-generated method stubDeadlock d1 = new Deadlock("張三");Deadlock d2 = new Deadlock("李四");d1.start();d2.start();}}
總結
- 上一篇: 14.1 线程回顾和同步函数
- 下一篇: 14.3 线程实现方法2