【发布时间】:2014-01-29 03:35:25
【问题描述】:
我有两个线程:C和D。如果我想让线程C先执行,然后线程D,那就是我必须做的:
这是ThreadC类的代码:
public class ThreadC implements Runnable {
int isi[] = new int[100];
public void run () {
for (int i = 0;i < isi.length; i++) {
isi[i] = i;
System.out.print(isi[i] + " ");
}
}
}
这是ThreadD类的代码:
public class ThreadD implements Runnable {
int temp=0;
public void run () {
for(int i = 0; i < 1000; i++)
temp += i;
System.out.println("nilai temp : " + temp);
}
}
这是主要的方法:
public class main {
public static void main (String[] args) {
ThreadC tc = new ThreadC();
Thread t1 = new Thread(tc);
t1.start();
ThreadD td = new ThreadD();
Thread t2 = new Thread(td);
t2.start();
}
}
编辑:
我实际上有问题,我有课。首先我调用 ThreadC。我希望线程 C 完成执行,然后执行 for 下的线程。然后我调用 ThreadD。就像下面的代码:
for (int j = 0; j < idW.length; j++) {
webtext = d.getWebText(idW[j]);
ThreadPrepo tpo = new ThreadPrepo(webtext, host[j%jumhost], "server", 1099, idW[j]);
Thread t1 = new Thread(tpo);
t1.start();
}
ThreadD td = new ThreadD;
Thread t2 = new Thread(t2);
t2.start();
所以 ThreadD t2 将在线程 t1 完成后执行,所以线程 t2 必须等到 t1 哈希完成。
我该如何解决?
【问题讨论】:
-
如果它是
Runnable,请不要将其称为线程。在两个Runnable实例之间的共享对象上同步您的run()方法代码。第一个进入块的将首先执行并完成。 -
为什么每个人尝试使用线程做的第一件事就是首先打败线程的全部意义?
-
我从来不明白这些问题。如果你想要顺序执行,你为什么要使用线程呢?
-
我的猜测是,这只是一个简化的例子,它实际上更复杂,实际上需要运行多个线程。
-
尽管如此,如果第二个线程必须等待第一个线程完成,那么使用两个线程是没有意义的。这两个动作应该是同一个线程的一部分。您真正需要的可能是某种顺序作业调度系统。
标签: java multithreading synchronization