zoukankan      html  css  js  c++  java
  • ReentrantLock显示锁

    public class AttemptLocking {
    
        /*
         * public AttemptLocking() {
         * 
         * System.out.println("构造器初始化...");
         * }
         * 
         * {
         * System.out.println("init ...");
         * }
         * 
         * static {
         * System.out.println("static init ");
         * }
         */
        private ReentrantLock reentrantLock = new ReentrantLock();
    
        public void unTimed() {
    
            boolean captured = reentrantLock.tryLock();
    
            try {
                System.out.println("try lock:" + captured);
            } finally {
                // TODO: handle finally clause
                if (captured) {
                    reentrantLock.unlock();
                }
            }
        }
    
        public void timed() {
            boolean captured = false;
    
            try {
                try {
                    captured = reentrantLock.tryLock(2, TimeUnit.SECONDS);
                    System.out.println("tryLock 2 Seconds " + captured);
                } catch (InterruptedException e) {
                    // TODO Auto-generated catch block
                    e.printStackTrace();
                }
    
            } finally {
                // TODO: handle finally clause
                if (captured) {
                    reentrantLock.unlock();
                }
            }
    
        }
    
        public static void main(String[] args) {
            final AttemptLocking attemptLocking = new AttemptLocking();
            attemptLocking.unTimed();
            attemptLocking.timed();
            new Thread() {
    
                {
                    setDaemon(true);
    
                }
    
                @Override
                public void run() {
    
                    attemptLocking.reentrantLock.lock();
    
                    System.out.println("acquired");
                };
    
            }.start();
            Thread.yield();// give the 2nd task a chance只是给另一个线程一个机会,并不保证另一个线程一定能得到资源
            attemptLocking.unTimed();
            attemptLocking.timed();
        }
    
    }
    output:
    
    

    try lock:true

    
    

    tryLock 2 Seconds true

    
    

    acquired

    
    

    try lock:false

    
    

    tryLock 2 Seconds false

     

     

     

     

     
  • 相关阅读:
    wampserver服务器离线,无法访问此网站 找不到 项目 的服务器 DNS 地址。
    node.js(一)介绍与安装
    js全局函數
    类和对象的定义
    iframe框架学习
    while和do-while的区别
    html5视频音频
    列表
    html表格的学习
    云课堂数组1
  • 原文地址:https://www.cnblogs.com/zhangfengshi/p/9243245.html
Copyright © 2011-2022 走看看