线程 :循环打印A,B 方法一:利用ReentrantLock

ReentrantLock:

一个可重入的互斥锁 Lock,它具有与使用 synchronized 方法和语句所访问的隐式监视器锁相同的一些基本行为和语义,但功能更强大。

ReentrantLock 将由最近成功获得锁,并且还没有释放该锁的线程所拥有

Condition:

其中,Lock 替代了 synchronized 方法和语句的使用,Condition 替代了 Object 监视器方法的使用

步骤:

1.创建lock锁:ReentrantLock

2.创建Condition

3.、

   1).执行完当前操作后,唤醒 其他线程 (通过condition);

    2)关闭当前线程


实例:

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();
   }
  }
 }
}

你可能感兴趣的:(线程 :循环打印A,B 方法一:利用ReentrantLock)