您的位置:首页 > 编程语言 > Java开发

Java 多线程中。两个线程交替执行,一个输出偶数,一个输出奇数(方法二)

2017-07-10 23:21 821 查看
package com.up366.thread.example;

import java.util.concurrent.Semaphore;

/**
* Java 多线程中。两个线程交替执行,一个输出偶数,一个输出奇数
* Created by 一页书 on 2017/7/9.
*/
public class DigitPrinterExample {
static int i = 1;
public static void main(String[] args) {
Semaphore oddSemaphore = new Semaphore(1); /* 只有奇数信号量的初始资源数为1,保证从1开始打印  */
Semaphore evenSemaphore = new Semaphore(0); /* 偶数信号量*/
new Thread(new DigitPrinter(i,oddSemaphore,evenSemaphore)).start();
new Thread(new DigitPrinter(i,evenSemaphore,oddSemaphore)).start();
}
}

/**
* 打印线程
*/
class DigitPrinter implements Runnable{
static int num;
Semaphore curSemaphore;
Semaphore nextSemaphore;

public DigitPrinter(int num, Semaphore curSemaphore,Semaphore nextSemaphore) {
this.num = num;
this.curSemaphore = curSemaphore;
this.nextSemaphore = nextSemaphore;
}

@Override
public void run() {
while (num <= 100){
try {
curSemaphore.acquire();  /* 请求打印需要的信号量,资源数-1,即down操作  */
System.out.println(num);
++num;
nextSemaphore.release(); /* 释放下一个线程打印需要的信号量,资源数+1,即up操作  */
} catch (InterruptedException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  java 多线程
相关文章推荐