【笔记】synchronized共享代码块

【笔记】synchronized共享代码块,第1张

【笔记】synchronized共享代码块
package sync;

public class Ticket implements Runnable {
    private int ticket = 100;
    private Object lock = new Object();


    @Override
    public void run() {

        while (true) {
//            synchronized (任意对象):对象是唯一的
            synchronized (lock){
                if (ticket <= 0) {
                    break;
                } else {
//                    try {
//                        Thread.sleep(1000);
//                    } catch (InterruptedException e) {
//
//                    }
                    ticket--;
                    System.out.println(Thread.currentThread().getName() + "在买票,还剩" + ticket + "票");
                }
            }

        }
    }
}
package sync;

public class SyncDemo {
    public static void main(String[] args) {
        Ticket ti = new Ticket();

        Thread tr1 = new Thread(ti);
        Thread tr2 = new Thread(ti);
        Thread tr3 = new Thread(ti);

        tr1.setName("老王");
        tr2.setName("老李");
        tr3.setName("老张");

        tr1.start();
        tr2.start();
        tr3.start();
    }
}

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/zaji/5695607.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-12-17
下一篇 2022-12-17

发表评论

登录后才能评论

评论列表(0条)

保存