java 多线程之join
来源:互联网 发布:淘宝代运营哪家好 编辑:程序博客网 时间:2024/05/21 10:36
t.join();表示当前线程停止执行直到t线程运行完毕;
t.join(1000); 表示当前线程等待t线程运行1000后执行;
package org.thread;/** * t.join()表示当前线程停止执行直到t线程运行完毕 * t.join(1000);表示当前线程等待t线程运行1000后执行 * @author * */public class JoinTestDemo2 { public static void main(String[] args) throws InterruptedException{ //Delay,in milliseconds before we interrupt MessageLoop //thread(default one hour) long patience = 1000 * 60 * 60; //if command line argument present,gives patience inseconds if(args.length>0){ try { patience = Long.parseLong(args[0])*1000; } catch (Exception e) { System.out.println("Argument must be a integer"); System.exit(1); } } threadMessage("start MessageLoop thread"); long startTime = System.currentTimeMillis(); Thread t = new Thread(new MessageLoop()); t.start(); threadMessage("waiting for messageLoop thread to finish"); //loop until MessageLoop thread exits while(t.isAlive()){ threadMessage("still waiting"); //wait maxium of 1 second for MessageLoop thread to finish t.join(); //t.join(1000); if (((System.currentTimeMillis() - startTime) > patience) &&t.isAlive()){ threadMessage("Tired of waiting!"); t.interrupt(); //Should't be long now --wait indefinitely t.join(); } } threadMessage("Finally!"); } /*Create a new instance of Test*/ public JoinTestDemo2(){ } /*Display a message,preceded by the name of the current thread*/ static void threadMessage(String message){ String threadName = Thread.currentThread().getName(); System.out.format("%s:%s%n",threadName,message); } private static class MessageLoop implements Runnable{ @Override public void run() { String importantInfo[] = { "Mares eat oats", "Does eat oats", "Little lambs eat ivy", "A kid will eat ivy too" }; try { for(int i = 0;i<importantInfo.length;i++){ //Pause for 4 seconds Thread.sleep(4000); //print a message threadMessage(importantInfo[i]); } } catch (Exception e) { threadMessage("I was't done!"); } } } }
上述不同代码的运行结果:
颜色对应
init:
deps-jar:
Compiling 1 source file to D:/test/desPatten/build/classes
compile-single:
run-single:
main: Starting MessageLoop thread
main: Waiting for MessageLoop thread to finish
main: Still waiting...
Thread-0: Mares eat oats
Thread-0: Does eat oats
Thread-0: Little lambs eat ivy
Thread-0: A kid will eat ivy too
main: Finally!
生成成功(总时间:17 秒)
deps-jar:
Compiling 1 source file to D:/test/desPatten/build/classes
compile-single:
run-single:
main: Starting MessageLoop thread
main: Waiting for MessageLoop thread to finish
main: Still waiting...
main: Still waiting...
main: Still waiting...
main: Still waiting...
Thread-0: Mares eat oats
main: Still waiting...
main: Still waiting...
main: Still waiting...
main: Still waiting...
Thread-0: Does eat oats
main: Still waiting...
main: Still waiting...
main: Still waiting...
main: Still waiting...
Thread-0: Little lambs eat ivy
main: Still waiting...
main: Still waiting...
main: Still waiting...
main: Still waiting...
Thread-0: A kid will eat ivy too
main: Finally!
生成成功(总时间:17 秒)
0 0
- java 多线程之join
- JAVA多线程之(join)
- Java 多线程之join
- java多线程之join
- java多线程之join
- java多线程之Join
- java多线程之join()方法
- Java多线程之Fork/Join
- java多线程之join()方法
- Java多线程系列-- 之 join()
- java多线程之fork/join
- Java多线程之fork/join框架详解
- Java 多线程之--- Thread.join介绍
- 深入浅出JAVA多线程之方法 JOIN
- java多线程之join与yield
- java 多线程编程之join()的用法
- Java多线程之fork/join框架详解
- java多线程之join与yield
- JAVA DOM生成和解析XML实例
- python 学习日记(一)
- Linux磁盘设备名变了
- javascript DOM编程艺术学习笔记(5)通过DOM来设置样式案例
- vs2010+matlab R2013a+win7 32bit 混合编程
- java 多线程之join
- 程序员必读经典书籍
- 1011. A+B和C (15)
- 【Boost】boost::noncopyable介绍
- C语言中无符号扩展和带符号扩展知识讲解
- DELPHI分别连接MS SQLSERVER、Oracle和ACCESS数据库的连接字符串(备用)
- 070001 KANO模型
- 第二批要买的书
- Myeclipse更改jsp默认编码