美文网首页
多线程实现加一接着减一,连续五次

多线程实现加一接着减一,连续五次

作者: 长孙俊明 | 来源:发表于2019-10-17 12:34 被阅读0次
class Resources {
        private ReentrantLock lock = new ReentrantLock();
        private Condition condition = lock.newCondition();
        private int number = 0;
        private void add() {
            // 加1
            lock.lock();
            while(number > 0) {
                try {
                    condition.await();
                } catch (InterruptedException e) {
                    e.printStackTrace();
                }
            }
            number++;
            System.out.println("加1");
            condition.signalAll();
            lock.unlock();
        }

        private void reduce() {
            // 减1
            lock.lock();
            while(number <= 0) {
                try {
                    condition.await();
                } catch (InterruptedException e) {
                    e.printStackTrace();
                }
            }
            number--;
            System.out.println("减1");
            condition.signalAll();
            lock.unlock();
        }
    }

    public void test() {
        Resources resources = new Resources();
        for(int i = 0; i < 5; i++) {
            final int temp = i;
            new Thread(new Runnable() {
                @Override
                public void run() {
                    resources.add();
                }
            }).start();
        }
        for(int i = 0; i < 5; i++) {
            final int temp = i;
            new Thread(new Runnable() {
                @Override
                public void run() {
                    resources.reduce();
                }
            }).start();
        }
    }

相关文章

  • 多线程实现加一接着减一,连续五次

  • iOS多线程之NSThread

    前面总结了多线程基本概念和iOS多线程PThread的使用,下面接着总结iOS多线程的另外一种实现方案NSThre...

  • 减一加一

    减一才能加一 用完之前,绝对不买。购物前,先提醒自己做到有进有出,用掉一件或淘汰一件出去,才能获得资格再购买一件新...

  • flowable 6.4 完美实现多实例任务加签减签

    网上一直没有flowable的文章介绍加签减签的操作,实际flowable早比activiti先一步实现了加签减签...

  • 前端——js加/减一天

    如下所示,可轻松实现加/减一天: function format (fmt,z) { var o = { ...

  • iOS多线程实现方案之 -- NSThread

    书接上回, 上次谈到iOS 多线程知识点总结之: 进程和线程, 接着就是 多线程实现方案里面的 NSThread...

  • 多线程实现按钮连续点击

    在日常测试中,按钮的连续点击可能会造成应用的奔溃,或者重复提交请求,对此我研究了下如何实现按钮的快速连续点击思路如...

  • Java实现基本计算器

    Java实现基本计算器,包括 加、减、乘、除、括号的运算。

  • python多线程的使用

    python多线程的使用 后续还会更新其他方法实现的多线程。 Queue实现多线程 通过队列实现多线程 启动一定数...

  • iOS之多线程分析

    对于多线程的理解:多线程: 利用多核处理器的优势,实现多个操作的并发执行,使系统资源得到充分利用,提高运行效率,减...

网友评论

      本文标题:多线程实现加一接着减一,连续五次

      本文链接:https://www.haomeiwen.com/subject/wdmmmctx.html