zoukankan      html  css  js  c++  java
  • java中锁的应用(ReentrantLock)

    package com.xielu.test;
    
    public class explicit {
        private static Lock lock = new ReentrantLock();
        private static Condition odd = lock.newCondition();
        private static COndition even = lock.newCondition();
    
        private static int cnt = 1;
        private static final int MAX = 100;
    
        pulic static void main(String args[]){
            Thread th1 = new Thread(){
                @Override
                public void run(){
                    try{
                        lock.lock();
                        while(cnt <= MAX){
                            if(cnt%2 != 0){
                                System.out.println(cnt);
                                cnt++;
                                even.signalAll();
                            }else{
                                try{
                                    odd.await();
                                }catch(Exception e){
                                    e.printStackTrace();
                                }
                            }
                        }
                    } finally {
                        lock.unlock();
                    }
                }
            };
        
            Thread th2 = new Thread(){
                @Override
                public void run(){
                    try{
                        lock.lock();
                        while(cnt <= MAX){
                            if(cnt%2 == 0){
                                System.out.println(cnt);
                                cnt++;
                                odd.signalAll();
                            }else{
                                try{
                                    even.await();
                                }catch(Exception e){
                                    e.printStackTrace();
                                }
                            }
                        }
                    } finally {
                        lock.unlock();
                    }
                }
            }; 
            th1.start();
            th2.start();   
        }
    }
    

      

  • 相关阅读:
    用Java实现四则运算
    敏捷开发角色分配
    需求分析之WBS
    需求分析之NABCD
    电梯演说
    开发流程的选择
    软件团队模式的选择
    维护日程管理项目
    日程管理系统中找错误
    Android的测试
  • 原文地址:https://www.cnblogs.com/spillage/p/15470952.html
Copyright © 2011-2022 走看看