码迷,mamicode.com
首页 > 编程语言 > 详细

多个线程操作一个变量(synchronized)

时间:2021-05-24 12:36:19      阅读:0      评论:0      收藏:0      [点我收藏+]

标签:notifyall   start   div   java   ati   一个   win   cep   highlight   

public class WindowSell2 {

    private int num=0;

    public synchronized void increade() throws InterruptedException{
        while (num != 0){
            this.wait();
        }
        num++;
        System.out.println("当前线程是"+Thread.currentThread().getName()+"num="+num);
        this.notifyAll();
    }

    public synchronized void decreade() throws InterruptedException{
        while (num == 0){
            this.wait();
        }
        num--;
        System.out.println("当前线程是"+Thread.currentThread().getName()+"num="+num);
        this.notifyAll();
    }

}

public class MainTest {
public static void main(String[] args) {

/**
*
* 两个线程进行操作
*
*
*
*
*/

WindowSell2 windowSell2 = new WindowSell2();
new Thread(()->{
try {
for (int i = 0; i < 12; i++) {
windowSell2.increade();
}


}catch (InterruptedException e){

}
},"A").start();

new Thread(()->{
try {
for (int i = 0; i < 12; i++) {
windowSell2.decreade();
}


}catch (InterruptedException e){

}
},"B").start();

new Thread(()->{
try {
for (int i = 0; i < 12; i++) {
windowSell2.decreade();
}


}catch (InterruptedException e){

}
},"C").start();


}
}

当前线程是Anum=1
当前线程是Bnum=0
当前线程是Anum=1
当前线程是Bnum=0
当前线程是Anum=1
当前线程是Bnum=0
当前线程是Anum=1
当前线程是Bnum=0
当前线程是Anum=1
当前线程是Cnum=0
当前线程是Anum=1
当前线程是Bnum=0
当前线程是Anum=1
当前线程是Cnum=0
当前线程是Anum=1



 

多个线程操作一个变量(synchronized)

标签:notifyall   start   div   java   ati   一个   win   cep   highlight   

原文地址:https://www.cnblogs.com/gaohq/p/14773820.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!