两个线程之间的轮流等待和唤醒
两个线程之间的轮流等待和唤醒
602400919 发表于1年前
两个线程之间的轮流等待和唤醒
  • 发表于 1年前
  • 阅读 2
  • 收藏 0
  • 点赞 0
  • 评论 0

标题:腾讯云 新注册用户域名抢购1元起>>>   

package test;

/**
 * 两个线程轮流等待和唤醒.
 * @author 60240919@qq.com
 *
 */
public class WaitNotifyTest {
    static Object mo = new Object();
    static boolean wflag = false;

    static ThreadLocal<Integer> threadLocal = new ThreadLocal<Integer>(){
        protected Integer initialValue() {
            return 0;
        }
    };
    
    public static void main(String[] args) {
        new WaitThread().start();
        new NotyfyThread().start();
    }
    
    static class WaitThread extends Thread {
        @Override
        public void run() {
            while(true) {
                synchronized (mo) {
                    try {
                        if(!wflag) {
                            threadLocal.set(threadLocal.get()+1);
                            System.out.println("第几次等待: "+threadLocal.get());
                            wflag = true;
                            mo.wait();
                        }
                    } catch (InterruptedException e) {
                        System.out.println("main exception!");
                    }
                }
            }
            
        }
    }
    
    static class NotyfyThread extends Thread {
        @Override
        public void run() {
            while(true) {
                synchronized (mo) {
                    if(wflag) {
                        threadLocal.set(threadLocal.get()+1);
                        System.out.println("第几次唤醒: "+threadLocal.get());
                        mo.notify();
                        wflag = false;
                    }
                }
                try {
                    Thread.sleep(2000L);
                } catch (InterruptedException e) {
                    System.out.println("NotyfyThread exception!");
                }
            }
        }
    }

}
 

********************************************程序运行结果********************************************************

......

第几次唤醒: 74
第几次等待: 75
第几次唤醒: 75
第几次等待: 76
第几次唤醒: 76
第几次等待: 77
第几次唤醒: 77
第几次等待: 78
第几次唤醒: 78
第几次等待: 79
第几次唤醒: 79
第几次等待: 80

......

标签: wait notify
共有 人打赏支持
粉丝 0
博文 4
码字总数 2002
×
602400919
如果觉得我的文章对您有用,请随意打赏。您的支持将鼓励我继续创作!
* 金额(元)
¥1 ¥5 ¥10 ¥20 其他金额
打赏人
留言
* 支付类型
微信扫码支付
打赏金额:
已支付成功
打赏金额: