Java多线程同步问题:信号量使用示例

原创 - 日理万妓 2024-10-13 00:51 184阅读 0赞

在Java中,我们可以使用Semaphore类来实现多线程的同步。下面是一个简单的信号量使用示例:

  1. 创建一个信号量(例如容量为3):
  1. import java.util.concurrent.Semaphore;
  2. public class SemaphoreExample {
  3. private Semaphore semaphore = new Semaphore(3); // 信号量容量为3
  4. public void producer() throws InterruptedException {
  5. for (int i = 0; i < 5; i++) { // 生产者每轮生产5个资源
  6. semaphore.acquire(); // 请求使用一个资源
  7. System.out.println("Producer produced: " + i); // 打印生产和消耗的状态
  8. semaphore.release(); // 释放一个资源
  9. }
  10. }
  11. public void consumer() throws InterruptedException {
  12. for (int i = 0; i < 5; i++) { // 消费者每轮消费3个资源
  13. semaphore.acquire(); // 请求使用一个资源
  14. System.out.println("Consumer consumed: " + i); // 打印生产和消耗的状态
  15. semaphore.release(); // 释放一个资源
  16. }
  17. }
  18. public static void main(String[] args) {
  19. SemaphoreExample example = new SemaphoreExample();
  20. Thread producerThread = new Thread(example::producer);
  21. Thread consumerThread = new Thread(example::consumer);
  22. producerThread.start(); // 启动生产者线程
  23. consumerThread.start(); // 启动消费者线程
  24. // 生产和消费完成后,主线程会等待所有线程执行完毕
  25. }
  26. }

在这个示例中,我们创建了一个具有3个资源的信号量。生产者和消费者通过请求和释放信号量来控制对资源的访问。

文章版权声明:注明蒲公英云原创文章,转载或复制请以超链接形式并注明出处。

发表评论

表情:
评论列表 (有 0 条评论,184人围观)

还没有评论,来说两句吧...

相关阅读