zoukankan      html  css  js  c++  java
  • ReentrantLock使用示例

    /**
     * ReentrantLock是独占锁
     * Lock锁的使用,把锁和要用锁同步的代码放在一起,这里就是放在Printer类中了 
       *     获取到锁后,最后要在finally代码块中手动释放锁
     */
    public class LockTest {
    
        public static void main(String[] args) {
    
            Printer printer = new LockTest().new Printer();
    
            new Thread() {
                @Override
                public void run() {
                    while (true) {
                        try {
                            Thread.sleep(200);
                        } catch (InterruptedException e) {
                            // TODO Auto-generated catch block
                            e.printStackTrace();
                        }
                        printer.print("zhangsan33953");
                    }
    
                };
            }.start();
    
            new Thread() {
                @Override
                public void run() {
                    while (true) {
                        try {
                            Thread.sleep(200);
                        } catch (InterruptedException e) {
                            // TODO Auto-generated catch block
                            e.printStackTrace();
                        }
                        printer.print("lisi27965");
                    }
                };
            }.start();
        }
    
        class Printer {
    
            private Lock lock = new ReentrantLock();//默认是非公平锁
    
            public void print(String name) {
                lock.lock(); // 获取锁 , 获取不到会阻塞
                try {
                    
                    int len = name.length();
                    for (int i = 0; i < len; i++) {
                        System.out.print(name.charAt(i));
                    }
                    System.out.println();
                    
                } finally {
                    lock.unlock(); // 释放锁
                }
            }
        }
    
    }
  • 相关阅读:
    MySQL学习笔记
    Git常用命令
    MacBook Pro m1安装swoole PHP版本7.4
    斐波那契数列实现的2种方法
    归纳一些比较好用的函数
    阶乘的实现
    冒泡排序
    PHP上传图片
    PHPStorm常用快捷键
    DataTables的使用
  • 原文地址:https://www.cnblogs.com/moris5013/p/11765555.html
Copyright © 2011-2022 走看看