欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

线程安全性问题的解决:

程序员文章站 2022-03-09 23:19:57
...

同步代码块处理实现Runnable接口的线程安全性问题:

//创建三个窗口买票,总票数为100 张:使用实现Runaable接口的方式。
class Window2 implements Runnable{
    private int Ticket = 100;
    Object obj = new Object();
    @Override
    public void run() {
        while (true) {
            synchronized (obj) {
                if (Ticket > 0) {
                    System.out.println(Thread.currentThread().getName() + "卖票:票号为:" + Ticket);
                    Ticket--;
                } else {
                    break;
                }
            }
        }
    }
}

public class ThreadTest04 {
    public static void main(String[] args) {
        Window2 w1 = new Window2();


        Thread t1 = new Thread(w1);
        Thread t2 = new Thread(w1);
        Thread t3 = new Thread(w1);
        t1.setName("窗口1");
        t2.setName("窗口2");
        t3.setName("窗口3");
        t1.start();
        t2.start();
        t3.start();
    }
}

运行结果:

线程安全性问题的解决: