备用打印多线程

时间:2018-03-31 14:11:01

标签: java multithreading

这是我用2个线程替换打印2个不同数字的简单代码。线程A打印1和线程B打印2.两者之间应交替打印1,2,1,2,1,2,1,2,....等等。 现在我在下面的程序中看到我们得到< 1,2>,< 1,2>组合,......等等5次。

看起来两个线程都有相同的变量共享。但我是一个局部变量。我如何分享

public class MyThread扩展Thread {

int numToPrint;
Turn turn;
MyThread(int n, Turn turn)
{
    this.numToPrint=n;
    this.turn=turn;
}
public void run() {
    for (int i=0;i<10;i++) {
        if(turn.t==numToPrint) {
            System.out.println(numToPrint);
            if(numToPrint==1)
                turn.t=2;
            else
                turn.t=1;
            turn.doNotify();
        }
        else
        {
           turn.doWait();
        }
    }
}

}

public class Main {

public static void main(String[] args) {
    Turn t=new Turn();
    MyThread t1=new MyThread(1,t);
    t1.start();
    MyThread t2=new MyThread(2,t);
    t2.start();

}

}

0 个答案:

没有答案