1. 程式人生 > >java 線程問題,寫一個死鎖(原理:只有互相都等待對方放棄資源才會產生死鎖)

java 線程問題,寫一個死鎖(原理:只有互相都等待對方放棄資源才會產生死鎖)

() 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 線程問題,寫一個死鎖(原理:只有互相都等待對方放棄資源才會產生死鎖)