线程|线程 (循环打印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();
}
}
} }

    推荐阅读