关闭

Java用wait和notify实现线程协作

标签: java线程
521人阅读 评论(0) 收藏 举报
分类:

编写一个应用程序,除了主线程外,还有两个子线程。两个子线程对同一个数据操作,其中一个线程负责对该数据做递增操作,一个线程负责对该线程做递减操作。当这个数据小于0的话,递减操作等待,当这个数据大于100的话,递增操作等待。

import java.lang.*;
public class Demo{
    private int a = 0;

    public synchronized void add(){
        ++a;

        if(a > 100){
            try{
                this.wait();

            }catch(Exception e){
                e.printStackTrace();
            }
        }else{
            System.out.println(Thread.currentThread().getName()+":"+a);
        }
        this.notify();
    }

    public synchronized void delete(){
        --a;
        if(a < 0){
            try{
                this.wait();

            }catch(Exception e){
                e.printStackTrace();
            }
        }else{
            System.out.println(Thread.currentThread().getName()+":"+a);
        }
        this.notify();
    }
    public static void main(String[] args) {
        Demo dm = new Demo();
        new Thread(){
            public void run(){
                while(true){
                    dm.add();
                }
            }
        }.start();

        new Thread(){
            public void run(){
                while(true){
                    dm.delete();
                }
            }
        }.start();
    }

}
0
0

查看评论
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
    个人资料
    • 访问:62839次
    • 积分:1485
    • 等级:
    • 排名:千里之外
    • 原创:79篇
    • 转载:0篇
    • 译文:0篇
    • 评论:7条
    我的个人主页欢迎大家来访
    http://liuwang.github.io