关于java多线程程序的问题

来源:百度知道 编辑:UC知道 时间:2024/06/17 12:44:25
用两个线程交替打印1~10000之的数,代码如下,
public class MultiThread {
public static void main(String[] args) {
MultiPlus2 MP2 = new MultiPlus2();
MP2.start();
MultiPlus1 MP1 = new MultiPlus1();
MP1.start();

}
}

class MultiPlus1 extends Thread {

int i = 1;

public synchronized void run() {
for (; i < 10000;i++) {
if (i % 2 == 1) {
System.out.println("线程1输出:" + i);

notify();

} else
try {

wait();
} catch (InterruptedException e) {
// TODO 自动生成 catch 块
e.printStackTrace();
}

}
}
}

class MultiPlus2 extends Thread {

int i = 1;

public synchronized void run() {

for (; i < 10000;i++) {
if (i % 2 == 1)
try {
wait();
} catch (InterruptedException e) {
// TODO 自动生成 catch 块

简单做了下修改 你看看
public class Align
{
public static void main(String[] args)
{
MultiPlus2 MP2 = new MultiPlus2();
MP2.start();
MultiPlus1 MP1 = new MultiPlus1();
MP1.start();
}
}

class MultiPlus1 extends Thread
{

int i = 2;

public synchronized void run()
{
if (i % 2 == 0)
{
for (; i < 10000;i+=2)
{
System.out.println("线程1输出:" + i);
try
{
sleep(5);
}
catch (InterruptedException e)
{
e.printStackTrace();
}
}
}

}
}

class MultiPlus2 extends Thread
{
int i = 1;

public synchronized void run()
{

if (i % 2 == 1)
{
for (; i < 10000;i+=2)
{
System.out.println("线程2输出:" + i);
try
{
s