//Listing 7-1. Achieving Synchronization in Terms of Reentrant Locks
import java.util.concurrent.Executors;
import java.util.concurrent.ExecutorService;
import java.util.concurrent.TimeUnit;
import java.util.concurrent.locks.ReentrantLock; public class A {
public static void main(String[] args) {
ExecutorService executor = Executors.newFixedThreadPool();
final ReentrantLock lock = new ReentrantLock();
class Worker implements Runnable {
private final String name; Worker(String name) {
this.name = name;
} @Override
public void run() {
lock.lock();
try {
if (lock.isHeldByCurrentThread())
System.out.printf(
"Thread %s entered critical section.%n", name);
System.out.printf("Thread %s performing work.%n", name);
try {
Thread.sleep();
} catch (InterruptedException ie) {
ie.printStackTrace();
}
System.out.printf("Thread %s finished working.%n", name);
} finally {
lock.unlock();
}
}
}
executor.execute(new Worker("ThdA"));
executor.execute(new Worker("ThdB"));
try {
executor.awaitTermination(, TimeUnit.SECONDS);
} catch (InterruptedException ie) {
ie.printStackTrace();
}
executor.shutdownNow();
}
}

java Reentrant Lock的更多相关文章

  1. Java锁----Lock实现原理

    转载. https://blog.csdn.net/wl6965307/article/details/51249156 Lock完全用Java写成,在java这个层面是无关JVM实现的. 在java ...

  2. Java锁--Lock实现原理(底层实现)

    关于java lock的底层实现原理,讲的有点深,转载学习! 转载自 https://blog.csdn.net/Luxia_24/article/details/52403033 Lock完全用Ja ...

  3. <Java><Multi-thread><Lock interface>

    Overview 介绍java的lock interface. Motivation java拥有像synchronized这样的内置锁,那为什么还需要lock这样的外置锁呢? 首先,性能不是选择sy ...

  4. java并发 —— Lock

    java并发 -- Lock 关于java并发中的锁知识,少不了 Lock.本文转载自:Java并发编程:Lock. 从Java 5之后,在java.util.concurrent.locks包下提供 ...

  5. java 线程 Lock 锁使用Condition实现线程的等待(await)与通知(signal)

    一.Condition 类 在前面我们学习与synchronized锁配合的线程等待(Object.wait)与线程通知(Object.notify),那么对于JDK1.5 的 java.util.c ...

  6. Java Concurrency - Lock

    Lock 是 Java API 提供的另一种线程同步机制,它提供了比 synchronized 关键字更为灵活.强大的锁定操作. 锁是控制多个线程对共享资源进行访问的工具.通常,所提供了对共享资源的独 ...

  7. java 5 Lock

    import java.util.concurrent.locks.Lock; import java.util.concurrent.locks.ReentrantLock; public clas ...

  8. 深入java并发Lock一

    java有像syncronized这种内置锁,但为什么还须要lock这种外置锁? 性能并非选择syncronized或者lock的原因,jdk6中syncronized的性能已经与lock相差不大. ...

  9. JAVA中LOCK

    原文链接:http://www.cnblogs.com/dolphin0520/p/3923167.html 一.synchronized的缺陷 我们知道如果一个代码块被synchronized修饰了 ...

随机推荐

  1. loj 1009(dfs)

    题目链接:http://acm.hust.edu.cn/vjudge/problem/viewProblem.action?id=25835 思路:对每一个连通块将其染色,然后取颜色相同的最多的点,最 ...

  2. java.lang.NoClassDefFoundError: org/apache/avro/ipc/Responder

    文章发自:http://www.cnblogs.com/hark0623/p/4170174.html  转发请注明     java.lang.NoClassDefFoundError: org/a ...

  3. Linux常用命令_(文件操作)

    对文件的操作主要有以下命令: touch.cp.rm.mv.ln.mkdir.rmdir

  4. 2016.6.23 PHP实现新闻发布系统主体部分

    1.新闻发布系统的列表: <html><meta http-equiv="Content-Type" content="text/html; chars ...

  5. wpf 客户端【JDAgent桌面助手】开发详解(四) popup控件的win8.0的bug

    目录区域: 业余开发的wpf 客户端终于完工了..晒晒截图 wpf 客户端[JDAgent桌面助手]开发详解-开篇 wpf 客户端[JDAgent桌面助手]详解(一)主窗口 圆形菜单... wpf 客 ...

  6. linux fork 进程后 主进程的全局变量

    fork一个进程后,复制出来的task_struct结构与系统的堆栈空间是父进程独立的,但其他资源却是与父进程共享的,比如文件指针,socket描述符等 不同的进程使用不同的地址空间,子进程被创建后, ...

  7. [Cocos2d-x For WP8]点击移动精灵

    点击移动是游戏里面常用的操作,那么在Cocos2d-x里面可以通过setTouchEnabled(true)方法来设置接收屏幕的点击事件,然后添加ccTouchesEnded(CCSet* touch ...

  8. elasticsearch1.0 升级2.2的数据备份和恢复

    近期由于elasticsearch的版本升级,需要研究下elasticsearch的快照(snapshot)和恢复(restore)功能.   先说下背景,目前环境采用的是elasticsearch1 ...

  9. CentOS 安装Gitolite 服务器

    [jackluo@localhost .ssh]$ sudo groupadd git #创建 用户组 [jackluo@localhost .ssh]$ sudo adduser --system ...

  10. javascript获取随机数的几种方式

    //获取0-num的随机数 function randomNum(num){ return Math.floor(Math.random()*num); } //获取start-end的随机数 fun ...