研究了一下Reentrantlock在并发过程中的使用,下面是实现三个线程按顺序输出1,2,3:
import java.util.concurrent.locks.ReentrantLock;
/**
* 标题、简要说明. <br>
* 类详细说明.
* <p>
* Copyright: Copyright (c) 2014年11月6日 上午9:50:41
* <p>
* Company:
* <p>
*
* @author
* @version 1.0.0
*/
public class TestLock {
private static int state = 0;
/**
* @param args
*/
public static void main(String[] args) {
final ReentrantLock lock = new ReentrantLock();
// thread1
Thread t1 = new Thread(new Runnable() {
@Override
public void run() {
while (state <= 30) {
try {
// 加锁
lock.lock();
if (state % 3 == 0) {
System.out.print("1");
state++;
}
}
finally {
lock.unlock();
}
}
}
});
// thread2
Thread t2 = new Thread(new Runnable() {
@Override
public void run() {
while (state <= 30) {
try {
// 加锁
lock.lock();
if (state % 3 == 1) {
System.out.print("2");
state++;
}
}
finally {
lock.unlock();
}
}
}
});
// thread3
Thread t3 = new Thread(new Runnable() {
@Override
public void run() {
while (state <= 30) {
try {
// 加锁
lock.lock();
if (state % 3 == 2) {
System.out.println("3");
state++;
}
}
finally {
lock.unlock();
}
}
}
});
t1.start();
t2.start();
t3.start();
}
}
分享到:
相关推荐
java10个线程按照顺序打印1-100
java多线程每个线程挨着打印ABC的4种实现方式,有4个线程t1、t2、t3、t4,t1打印A后t2打印A再t3打印A再t4打印A,然后从新回到t1打印B再t2打印B...t4打印B... 4个线程轮流打印abc... 一个线程可以理解为一个人,打印...
java多线程按需交替执行,java新特性。
电子书相关:包含4个有关JAVA线程的电子书(几乎涵盖全部有关线程的书籍) OReilly.Java.Threads.3rd.Edition.Sep.2004.eBook-DDU Java Thread Programming (Sams) java线程第二版中英文 java线程第二版中英文 ...
使用条件变量控制三个线程按顺序输出数字, 第一个线程输出3的倍数余1, 第二个线程输出3的倍数余2, 第三个线程输出3的倍数
第一个线程输出3的倍数余1, 第二个线程输出3的倍数余2, 第三个线程输出3的倍数
1. 建立三个线程,并且同时运行它们。当运行时输出线程的名称。 实验步骤: (1)、创建类sy6_1 (2)、创建三个线程,调用start()方法启动这三个线程 (3)、保存文件,调试并编译运行程序。 参考程序运行效果: 2....
NULL 博文链接:https://lfl2011.iteye.com/blog/1701252
Java线程讲解Java线程讲解Java线程讲解Java线程讲解Java线程讲解Java线程讲解Java线程讲解Java线程讲解Java线程讲解Java线程讲解
单线程 单线程 单线程 单线程 单线程 单线程
这个小程序写了三个线程是按照我的意愿来输出的,其中要利用lock锁与condition_t2.signal();
Java的线程和Java AppletJava的线程和Java AppletJava的线程和Java AppletJava的线程和Java AppletJava的线程和Java Applet
* 分别使用Runnable接口和Thread类编程实 编写一应用程序创建两个线程一个线程打印输出1—1000之间所有的奇数(Odd Number) * 另外一个线程打印输出1-1000之间所有的偶数(Even Number)要求两个线程随机休眠一 段...
创建一个带三个子线程的程序,第一个线程启动10ms后,第二个线程再启动,然后再等待10ms后第三个线程启动,每一个线程从1—1000循环输出线程的名称和计数,当三个线程结束时要输出各自的结束信息,然后主线程结束。
三、Java中关于线程的名词解释 3 四、线程的状态转换和生命周期 4 Java线程:创建与启动 7 Java线程:线程名称的设定及获取 10 Java线程:线程栈模型与线程的变量 12 Java线程:线程的调度-休眠 13 Java线程:线程的...
java多线程的使用方法如何使用,怎么使用,使用过程中有什么要注意的
Java线程Java线程Java线程Java线程Java线程Java线程
Java线程:概念与原理 Java线程:创建与启动 Java线程:线程栈模型与线程的变量 Java线程:线程状态的转换 Java线程:线程的同步与锁 Java线程:线程的交互 Java线程:线程的调度-休眠 Java线程:线程的调度-优先级 ...
java程序(利用线程)。一个线程往成绩单中写入课程名和成绩,一个线程从成绩单中读出课程和成绩,并将课程和成绩显示在屏幕上。
Java 模拟线程并发 Java, 模拟线程并发,线程,并发 Java, 模拟线程并发,线程,并发 Java, 模拟线程并发,线程,并发 Java, 模拟线程并发,线程,并发