当前位置: 首页 > 新闻动态 > 软件编程

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

作者:用户投稿 浏览: 发布日期:2026-01-16
[导读]:这篇文章主要介绍了java信号量控制线程打印顺序的示例,如ABCABC这样输出线程,大家参考使用吧

复制代码 代码如下:
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();
    }
   }
  }

 }

}

免责声明:转载请注明出处:http://shjed.com/news/267383.html

扫一扫高效沟通

多一份参考总有益处

免费领取网站策划SEO优化策划方案

请填写下方表单,我们会尽快与您联系
感谢您的咨询,我们会尽快给您回复!