博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
JAVA Lock锁
阅读量:2108 次
发布时间:2019-04-29

本文共 1081 字,大约阅读时间需要 3 分钟。

这个加锁是显示定义的,比较简单,来看一下它怎么用

import java.util.concurrent.locks.ReentrantLock;public class TestLock {    public static void main(String[] args) {        TestLock2 testLock2 = new TestLock2();        new Thread(testLock2).start();        new Thread(testLock2).start();        new Thread(testLock2).start();    }}class TestLock2 implements Runnable{    int ticketsnums = 10;    //定义Lock锁    private final ReentrantLock lock = new ReentrantLock();    @Override    public void run() {        while (true){            try {                //加锁                lock.lock();                if (ticketsnums > 0){                    try {                        Thread.sleep(1000);                        System.out.println(ticketsnums--);                    } catch (InterruptedException e) {                        e.printStackTrace();                    }                }else {                    break;                }            }finally {                //解锁                lock.unlock();            }        }    }}

可以看到确实比较简单,定义一个lock锁,用完的时候解锁就好,主要就是这个加锁解锁的过程放到 try-catch中就好

看到结果确实线程安全了

转载地址:http://guuef.baihongyu.com/

你可能感兴趣的文章
JVM性能调优监控工具jps、jstack、jmap、jhat、jstat、hprof 详解
查看>>
Java - JVM TLAB、对象在内存中安置顺序、垃圾收集、回收算法
查看>>
转: 关于Linux与JVM的内存关系分析
查看>>
(转)Java 程序员必备的高效 Intellij IDEA 插件
查看>>
局域网(内网)docker安装及代理访问
查看>>
软考 英语学习
查看>>
maven 文件上传到远程服务器目录
查看>>
shell 脚本免密远程访问
查看>>
Linux平台Oracle多个实例启动说明
查看>>
在LINUX平台上手动创建数据库(oracle 10g)(在一个oracle服务器上启动两个实例)
查看>>
Oracle 10g 下载地址
查看>>
Linux 下 新增Oracle10g 实例
查看>>
LRM-00123 ORA-01078
查看>>
ORA-01102: cannot mount database in EXCLUSIVE mode
查看>>
专栏结语
查看>>
BERT 实战
查看>>
BERT 基础
查看>>
什么是 Transformer
查看>>
简述 XLNet 的原理和应用
查看>>
实战:为图片生成文本摘要
查看>>