一,题目:实现两个线程,一个打印奇数,另外一个打印偶数,这两个线程并发.
以下,我写了两种方法可以供参考:
第一种方法
Judge.java
package com.jishuoushu.java;
public class Judge implements Runnable
{
public Judge(String name)
{
this.name=name;
}
public void run()
{
while(true)
{
int a=(int)(Math.random()*100);
if(this.name=="线程A")
{
if(a%2==0)
{
try
{
System.out.println(name+"-->打印偶数:"+a);
Thread.sleep((int)(Math.random()*10)*1000);
}catch(InterruptedException e)
{
e.printStackTrace();
}
}
}
else
{
if(a%2!=0)
{
try
{
System.out.println(name+"-->打印奇数:"+a);
Thread.sleep((int)(Math.random()*10)*1000);
}catch(InterruptedException e)
{
e.printStackTrace();
}
}
}
}
}
private String name;
}
Test1.java
package com.jishuoushu.java;
public class Test1 {
public static void main(String [] args)
{
System.out.println("两个线程开始运行");
Judge j1=new Judge("线程A");
Judge j2=new Judge("线程B");
Thread th1=new Thread(j1);
Thread th2=new Thread(j2);
th1.start();
th2.start();
}
}
第二种方法
JiShu.java
package com.JiShu.java;
public class JiShu {
public static void main(String [] args)
{
int count=500;
System.out.println("两个线程开始运行:");
new Thread() //这是打印奇数的线程
{
public void run()
{
for(int i=1;i<count;i+=2)
{
try
{
System.out.println("线程A->打印奇数:"+i);
sleep(500);
}catch(InterruptedException e)
{
e.printStackTrace();
}
}
};
}.start();
new Thread() //这是打印偶数的线程
{
public void run()
{
for(int i=2;i<=count;i+=2)
{
try
{
System.out.println("线程B->打印偶数:"+i);
sleep(500);
}catch(InterruptedException e)
{
e.printStackTrace();
}
}
};
}.start();
}
}