java 線程問題,寫一個死鎖(原理:只有互相都等待對方放棄資源才會產生死鎖)
阿新 • • 發佈:2018-01-19
() ati ron args start print println class log
package com.swift; public class DeadLock implements Runnable { private boolean flag; DeadLock(boolean flag) { this.flag = flag; } public void run() { while (true) { if (flag) { synchronized ("suo1") { System.out.println(Thread.currentThread().getName()+"if....locka"); synchronized ("suo2") { System.out.println(Thread.currentThread().getName()+"if.....lockb"); } } } else { synchronized ("suo2") { System.out.println(Thread.currentThread().getName()+"else.....lockb"); synchronized ("suo1") { System.out.println(Thread.currentThread().getName()+"else....locka"); } } } } } public static void main(String[] args) { /* * 寫一個死鎖*/ //只有互相都等待對方放棄資源才會產生死鎖 new Thread(new DeadLock(true),"線程1").start(); new Thread(new DeadLock(false),"線程2").start(); } }
同步代碼塊的鎖也可以用對象,如LockA.locka
locka對象為靜態 公共
java 線程問題,寫一個死鎖(原理:只有互相都等待對方放棄資源才會產生死鎖)