3.线程死锁

死锁:同步锁中嵌套同步锁,导致锁无法释放
 
package com.jlong;
 
class ThreadTrain4 implements Runnable {
    private static int count = 100;
    public  Object object = new Object();
    public boolean flag = true;
 
    @Override
    public void run() {
        if (flag) {
            while (count > 0) {
                synchronized (object) {
                    show();
                }
            }
        } else {
            while (count > 0) {
                show();
            }
        }
    }
 
    public synchronized void show() {
        synchronized (object){
            if (count > 0) {
                try {
                    Thread.sleep(50);
 
                } catch (InterruptedException e) {
                    e.printStackTrace();
                }
                System.out.println(Thread.currentThread().getName() + "出售的第" + (100 - count + 1) + "张票");
                count--;
 
            }
        }
 
    }
}
 
public class ThreadDemo4 {
    public static void main(String[] args) throws InterruptedException {
        ThreadTrain4 threadTrain = new ThreadTrain4();
        Thread thread1 = new Thread(threadTrain);
        Thread thread2 = new Thread(threadTrain);
        thread1.start();
        Thread.sleep(50);
        threadTrain.flag = false;
        thread2.start();
    }
}
posted @ 2019-05-31 10:25  Gold_Long  阅读(165)  评论(0编辑  收藏  举报