Java的Thread之join – Anonymous的博客

t.join();表示当前线程停止执行直到t线程运行完毕;

t.join(1000); 表示当前线程等待t线程运行1000后执行;

/** Test.java** Created on 2008年2月25日, 上午9:57** To change this template, choose Tools | Template Manager* and open the template in the editor.*/

/**** @author rulinma*/public class Test { /** Creates a new instance of Test */ public Test() { } //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 { 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 (InterruptedException e) { threadMessage("I wasn’t done!"); } } }

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 in seconds. if (args.length > 0) { try { patience = Long.parseLong(args[0]) * 1000; } catch (NumberFormatException e) { System.err.println("Argument must be an integer."); System.exit(1); }

}

threadMessage("Starting 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 maximum 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(); //Shouldn’t be long now — wait indefinitely t.join(); }

} threadMessage("Finally!"); }

}

上述不同代码的运行结果:

颜色对应

init:deps-jar:Compiling 1 source file to D:/test/desPatten/build/classescompile-single:run-single:main: Starting MessageLoop threadmain: Waiting for MessageLoop thread to finishmain: Still waiting…Thread-0: Mares eat oatsThread-0: Does eat oatsThread-0: Little lambs eat ivyThread-0: A kid will eat ivy toomain: Finally!生成成功(总时间:17 秒)

init:deps-jar:Compiling 1 source file to D:/test/desPatten/build/classescompile-single:run-single:main: Starting MessageLoop threadmain: Waiting for MessageLoop thread to finishmain: Still waiting…main: Still waiting…main: Still waiting…main: Still waiting…Thread-0: Mares eat oatsmain: Still waiting…main: Still waiting…main: Still waiting…main: Still waiting…Thread-0: Does eat oatsmain: Still waiting…main: Still waiting…main: Still waiting…main: Still waiting…Thread-0: Little lambs eat ivymain: Still waiting…main: Still waiting…main: Still waiting…main: Still waiting…Thread-0: A kid will eat ivy toomain: Finally!生成成功(总时间:17 秒)

在乎的是看风景的心情,旅行不会因为美丽的风景终止。

Java的Thread之join – Anonymous的博客

相关文章:

你感兴趣的文章:

标签云: