我是新来的MultiThreading,我正在写一个应用程序,因为我有两个线程T1和T2。 在T1中,我有15条语句可以打印,T2我有15条语句可以打印。 我喜欢在T1执行语句5之后等待T2一段时间,然后在T1执行语句10之后继续T2。 我已经编写了代码,但T2并未等待,请任何人解释。如何使当前线程执行一些语句后等待一段时间
主题一:T1
public class ThreadOne extends Thread {
public void run() {
for (int i = 1; i <= 15; i++) {
System.out.println("This is Thread One " + i);
if (i == 5) {
synchronized (Test.threadB) {
try {
Test.threadB.wait();
} catch (InterruptedException ex) {
ex.printStackTrace();
}
}
} else if (i == 10) {
synchronized (Test.threadB) {
Test.threadB.notify();
}
}
}
}
}
主题二:T2
public class ThreadTwo extends Thread {
public void run() {
for (int i = 1; i <= 15; i++) {
System.out.println("This is Thread Two " + i);
}
}
}
测试:
public class Test {
static Thread threadA = null;
static Thread threadB = null;
public static void main(String[] args) throws InterruptedException {
threadA = new ThreadOne();
threadB = new ThreadTwo();
threadA.start();
threadB.start();
}
}
我没有料到O/P:
后T1执行Test.threadB 。等待();当我是5时,不需要打印T2语句。在T1 i是10之后,T2可以开始打印。
但O/P我收到是:
This is Thread One 1
This is Thread One 2
This is Thread One 3
This is Thread Two 1
This is Thread Two 2
This is Thread One 4
This is Thread Two 3
This is Thread One 5
This is Thread Two 4
This is Thread Two 5
This is Thread Two 6
This is Thread Two 7
This is Thread Two 8
This is Thread Two 9
This is Thread Two 10
This is Thread Two 11
This is Thread Two 12
This is Thread Two 13
This is Thread Two 14
This is Thread Two 15
This is Thread One 6
This is Thread One 7
This is Thread One 8
This is Thread One 9
This is Thread One 10
This is Thread One 11
This is Thread One 12
This is Thread One 13
This is Thread One 14
This is Thread One 15
为什么只有T2 ststements是T1之后执行I == 5或(这是线程一个5被印刷)?请任何人解释。
你觉得'Test.threadB.wait();'做什么,你为什么这么认为? –
我想让T2等待,所以我打电话等待T2对象。在T1执行i == 10之后,我通知T2继续工作。 – user1936201
_i想让T2等待_你为什么认为'Test.threadB.wait();'实现了这个? –