黑马程序员技术交流社区
标题:
Thread线程信息同步问题
[打印本页]
作者:
张林敏
时间:
2013-5-4 21:57
标题:
Thread线程信息同步问题
本帖最后由 张林敏 于 2013-5-4 22:31 编辑
<P>
public class ThreadMain {
/**
* @param args
* @throws InterruptedException
*/
public static void main(String[] args) throws InterruptedException {
StringBuffer sb = new StringBuffer("Start:");
Thread thread1 = new Thread1(sb);
Thread thread2 = new Thread2(sb);
thread1.start();
thread2.start();
System.out.println(sb);
}
}
class Thread1 extends Thread {
private StringBuffer sb;
public Thread1(StringBuffer sb) {
super();
this.sb = sb;
}
@Override
public void run() {
sb.append("\n[Thread1]");
for (int i = 0; i < 100; i++) {
sb.append(" "+i+" ");
}
}
}
class Thread2 extends Thread {
private StringBuffer sb;
public Thread2(StringBuffer sb) {
super();
this.sb = sb;
}
@Override
public void run() {
sb.append("\n[Thread2] Hello 黑马训练营 !");
}
}</P>
复制代码
像在上述的代码 要怎样才能先运行完 线程 thread1 与线程thread2 后在调用打印输出 ?
作者:
yp324
时间:
2013-5-4 22:25
join:
当A线程执行到了B线程的.join()方法时,A就会等待。等B线程都执行完,A才会执行。
StringBuffer sb = new StringBuffer("Start:");
Thread thread1 = new Thread1(sb);
Thread thread2 = new Thread2(sb);
thread1.start();
thread1.join();
thread2.start();
thread2.join();
System.out.println(sb);
主线程按顺序执行代码,当执行到thread1.start();时,线程1开启,这时线程1和主线程随机被分配CPU使用权,当主线程获得使用权时会继续按顺序执行下面的代码。
当执行到 thread1.join();时,主线程会等待,直到线程1执行完才又恢复到执行状态,继续往下执行。线程2同样如此。故只有先运行完 线程 thread1 与线程thread2 后再调用打印输出
作者:
张林敏
时间:
2013-5-4 22:30
yp324 发表于 2013-5-4 22:25
join:
当A线程执行到了B线程的.join()方法时,A就会等待。等B线程都执行完,A才会执行。
嗯,非常感谢....
作者:
曹睿翔
时间:
2013-5-4 23:15
如果问题解决请再次编辑,修改为已解决,若还有疑问,请继续追问
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2