1. 使用ReentrantLock

import java.util.concurrent.locks.ReentrantLock;

public class TestReentrantLock {

  public static void main(String[] args) {
final ReentrantLock reentrantLock = new ReentrantLock(true); reentrantLock.lock(); new Thread("Thread 1") {
public void run() {
for (int i = 1; i < 5; i++) {
reentrantLock.lock();
System.out.println(Thread.currentThread().getName() + " print " + i);
reentrantLock.unlock();
}
}
}.start(); new Thread("Thread 2") {
public void run() {
for (int i = 1; i < 5; i++) {
reentrantLock.lock();
System.out.println(Thread.currentThread().getName() + " print " + i);
reentrantLock.unlock();
}
}
}.start(); System.out.println(Thread.currentThread().getName() + " Done");
reentrantLock.unlock();
}
}

结果为:

main Done
Thread 1 print 1
Thread 1 print 2
Thread 1 print 3
Thread 1 print 4
Thread 2 print 1
Thread 2 print 2
Thread 2 print 3
Thread 2 print 4

  

最新文章

  1. 最强 Android Studio 使用小技巧和快捷键
  2. 培训SQLServer 嵌套事务PPT分享
  3. 【BZOJ-2436】嘉年华 DP + 优化
  4. 给dos命令“.bat”文件换图标
  5. 剑指offer--21题
  6. Java汉字排序(2)按拼音排序
  7. zoom 用法
  8. Android中SQLite使用
  9. [Q]如何将图纸打印为黑白的及设置打印样式
  10. JavaScript详解
  11. Python-01 学习第一节
  12. volatile作用及相关集合类
  13. VB.NET或C#报错:You must hava a license to use this ActiveX control.
  14. linux基础之CentOS7新特性
  15. Ubuntu 16.04常用快捷键
  16. dart --- 更符合程序员编程习惯的javascript替代者
  17. Codeforces C - String Reconstruction
  18. 各种容器与服务器的区别与联系 Servlet容器 WEB容器 Java EE容器 应用服务器 WEB服务器 Java EE服务器
  19. Breadth-first Search-690. Employee Importance
  20. 170320、使用快照和AOF将Redis数据持久化到硬盘中

热门文章

  1. linux中通过lsof恢复删除的文件,前题是fd被占用。
  2. python面试题之Python是如何进行内存管理的
  3. php分词工具scws
  4. MySQL查询本周、上周、本月、上个月份数据的sql脚本
  5. Python3.4+Django1.9+Bootstrap3
  6. POJ 2763 Housewife Wind 【树链剖分】+【线段树】
  7. Person Re-ID行人重试别数据集
  8. JS导出gridview到excel
  9. Maven使用lib下的包
  10. 【持久化框架】Mybatis与Hibernate的详细对比(转发)