...交替打印。例如第一个线程打印1,接着第二个线程打印100,接着第一...

发布网友

我来回答

4个回答

热心网友

你这样写两个线程实例t1和t2间没有交互通信,各跑各的,当然不会达到你上面说的那个结果。要想达到你上面说的那个效果,必须进行线程间通信。比如,你可以让两个线程实例都对方的引用,在run函数里执行打印的方法后,就让t2跑,t1去睡觉(sleep())。等t2打印完后,又让t1跑,让t2去睡觉,这样即可。 给你思路,代码我就不写了。

热心网友

...

热心网友

帮你改了改,测试可行

public class ThreadTest1 extends Thread {
private static int num = 0, n = 100;
static ThreadTest1 t1, t2;
static int i = 0;
static int x;
static String ss = new String();

public ThreadTest1() {
start();

}

public void run() {
for (x = 0; x < 200; x++) {
synchronized (ss) {
ss.notify();
Print();
try {
ss.wait();
} catch (InterruptedException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
synchronized (ss) {
ss.notifyAll();
}
}

public void Print() {
if (i == 0) {
i++;
System.out.println(this.getName() + ":" + ++num);
} else {
i = (i + 1) % 2;
System.out.println(this.getName() + ":" + n++);
}

}

public static void main(String[] args) throws InterruptedException {
t1 = new ThreadTest1();
t2 = new ThreadTest1();
}

}

热心网友

用个对象锁,获得对象锁的线程打印就行了。

声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com