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(); // 释放锁
                }
            }
        }
    
    }
  • 相关阅读:
    lua 语言基础
    C语言基础
    文件夹目录排序
    C#调用Server_SQL
    SQL语言基础
    批量修改文件名
    快捷键Alt、Shift、Ctrl 点击事件
    第一节:基础语法
    一:ASP.NET基础知识(二)
    孩子,我首先希望你自始至终都是一个理想主义者!
  • 原文地址:https://www.cnblogs.com/moris5013/p/11765555.html
Copyright © 2011-2022 走看看