• Lock锁的使用示例


    Lock锁是java5用来代替synchronized的一种面向对象的锁的方案

     1 public class LockDemo {
     2     /**
     3      * Lock是用来替换synchronized, 优点是Lock 更加面向对象。eclipse查看接口所有的实现类用CTRL+T
     4      */
     5 
     6     public static void main(String[] args) {
     7         final OuterLoop loop = new OuterLoop();
     8 
     9         for (int i = 0; i < 100; i++) {
    10             new Thread(new Runnable() {
    11                 @Override
    12                 public void run() {
    13                     loop.outputlock("liqiushui");
    14                 }
    15             }).start();
    16 
    17             new Thread(new Runnable() {
    18                 @Override
    19                 public void run() {
    20                     loop.outputlock("wangchongyang");
    21                 }
    22             }).start();
    23         }
    24     }
    25 
    26 }
    27 
    28 class OuterLoop {
    29     // 使用synchronized锁
    30     public synchronized void output(String name) {
    31         for (int i = 0; i < name.length(); i++) {
    32             System.out.print(name.charAt(i));
    33         }
    34         System.out.println();
    35     }
    36 
    37     
    38     private Lock lock = new ReentrantLock();
    39     // 使用lock方式
    40     public void outputlock(String name) {
    41         // 错误,不能在此处创建锁。原因,每个线程过来都会创建一个自己的锁,就起不到锁的效果。需要提到方法外面
    42         // Lock lock = new ReentrantLock();
    43         
    44         // 使用lock方式
    45         lock.lock();
    46         try {
    47             for (int i = 0; i < name.length(); i++) {
    48                 System.out.print(name.charAt(i));
    49             }
    50             System.out.println();
    51         } finally {
    52             // 将解锁放在finally中目的是防止程序在运行过程中抛出异常或者return,而没有被执行到
    53             lock.unlock();
    54         }
    55     }
    56 
    57 }

    <完>

  • 相关阅读:
    xrange和range区别
    bool([x]) 将x转换为Boolean类型
    bin(x) 将整数x转换为二进制字符串
    chr(i) 返回整数i对应的ASCII字符
    音乐欣赏
    迅雷下载百度云引发的“事故”
    swift获取图片路径出错
    记号笔写在白板上引起的尴尬而又无奈的事件
    swift 3新特性总结
    watch
  • 原文地址:https://www.cnblogs.com/zhangshiwen/p/5043331.html
Copyright © 2020-2023  润新知