线程|线程 (循环打印A,B 方法一:利用ReentrantLock)
ReentrantLock:
一个可重入的互斥锁 Lock
,它具有与使用 synchronized
方法和语句所访问的隐式监视器锁相同的一些基本行为和语义,但功能更强大。
ReentrantLock
将由最近成功获得锁,并且还没有释放该锁的线程所拥有。
Condition:
其中,Lock 替代了 synchronized 方法和语句的使用,Condition 替代了 Object 监视器方法的使用
步骤:
1.创建lock锁:ReentrantLock
2.创建Condition
3.、
1).执行完当前操作后,唤醒 其他线程 (通过condition);
2)关闭当前线程
【线程|线程 (循环打印A,B 方法一:利用ReentrantLock)】实例:
package com.wu.threadDemo;
import java.util.concurrent.locks.Condition;
import java.util.concurrent.locks.ReentrantLock;
public class Print {
ReentrantLock lock= new ReentrantLock();
Condition a =lock.newCondition();
Condition b =lock.newCondition();
public static void main(String[] args) {
Print p = new Print();
A a =p.new A();
B b =p.new B();
a.start();
b.start();
}
class A extends Thread{
@Override
public void run() {
while(true){
lock.lock();
try {
System.out.println("A");
b.signal();
a.await();
} catch (Exception e) {
e.printStackTrace();
}
lock.unlock();
}
}
}
class B extends Thread{
@Override
public void run() {
while(true){
lock.lock();
try {
System.out.println("B");
a.signal();
b.await();
} catch (Exception e) {
e.printStackTrace();
}
lock.unlock();
}
}
} }
推荐阅读
- Linux下面如何查看tomcat已经使用多少线程
- 多线程NSOperation
- Java|规范的打印日志
- whlie循环和for循环的应用
- 能力和自信的良性循环
- spring|spring boot中设置异步请求默认使用的线程池
- Android中非UI主线程能不能操作UI()
- Excel基础知识-打印的那些事(上)
- 时间管理的任务模型
- Swift7|Swift7 - 循环、函数