一道java线程题目

编写一个应用程序创建两个线程,一个线程打印输出1~1000之间所有的奇数,另外一个线程打印输出1~1000之间所有的偶数,要求两个线程随机休眠一段时间后继续打印输出下一个... 编写一个应用程序创建两个线程,一个线程打印输出1~1000之间所有的奇数,另外一个线程打印输出1~1000之间所有的偶数,要求两个线程随机休眠一段时间后继续打印输出下一个数。
public class JiOu2 {
public static void main(String[]args){
output T=new output();
Thread Jishu=new Thread(T);
Thread Oushu=new Thread(T);
Jishu.start();
Oushu.start();
while(true){
if(output.m==1000)
System.exit(0);
}
}
}
class output implements Runnable{
static int m;
public void run(){
for(m=1;m<=1000;m++){
if(m%2==1){
System.out.println("奇数:"+m);
}try{
Thread.sleep((int)(Math.random( )*100));
}catch(InterruptedException e){}
if(m%2==0){
System.out.println("偶数:"+m);
}try{
Thread.sleep((int)(Math.random( )*100));
}catch(InterruptedException e){}
}
}
}
以上是我写的代码,但是为什么显示时偶数有重复的出现呢,求解答
展开
 我来答
wang_wenshuai
推荐于2016-07-16 · TA获得超过473个赞
知道小有建树答主
回答量:149
采纳率:100%
帮助的人:152万
展开全部

没有同步,m出现了问题。加上synchronized关键字

public synchronized void run() {
for (m = 1; m <= 1000;m++) {
if (m % 2 == 1) {
System.out.println("奇数:" + m);
}
try {
Thread.sleep((int) (Math.random() * 100));
} catch (InterruptedException e) {
}
if (m % 2 == 0) {
System.out.println("偶数:" + m);
}
try {
Thread.sleep((int) (Math.random() * 100));
} catch (InterruptedException e) {
}
}
}
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式