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

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

作者: 长孙俊明 | 来源:发表于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();
            }
        }
    

    相关文章

      网友评论

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

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