H5W3
当前位置:H5W3 > 其他技术问题 > 正文

java信号量控制线程打印顺序的示例分享

代码如下:
import java.util.concurrent.Semaphore;

public class ThreeThread {

 public static void main(String[] args) throws InterruptedException {  Semaphore sempA = new Semaphore(1);  Semaphore sempB = new Semaphore(0);  Semaphore sempC = new Semaphore(0);  int N=100;  Thread threadA = new PrintThread(N, sempA, sempB, “A”);  Thread threadB = new PrintThread(N, sempB, sempC, “B”);  Thread threadC = new PrintThread(N, sempC, sempA, “C”);  threadA.start();  threadB.start();  threadC.start(); } static class PrintThread extends Thread{  int N;  Semaphore curSemp;  Semaphore nextSemp;  String name;  public PrintThread(int n, Semaphore curSemp, Semaphore nextSemp, String name) {   N = n;   this.curSemp = curSemp;   this.nextSemp = nextSemp;   this.name = name;  }  public void run() {   for (int i = 0; i < N; ++i) {    try {     curSemp.acquire();     System.out.println(name);     nextSemp.release();    } catch (InterruptedException e) {     Thread.currentThread().interrupt();    }   }  } }

}

本文地址:H5W3 » java信号量控制线程打印顺序的示例分享

评论 0

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址