【翻译六】java
来源:互联网 发布:珠海seo推广 编辑:程序博客网 时间:2024/06/03 22:59
Joins
The join
method allows one thread to wait for the completion of another. If t
is a Thread
object whose thread is currently executing,
t.join();
causes the current thread to pause execution until t
's thread terminates. Overloads of join
allow the programmer to specify a waiting period. However, as with sleep
, join
is dependent on the OS for timing, so you should not assume thatjoin
will wait exactly as long as you specify.
Like sleep
, join
responds to an interrupt by exiting with an InterruptedException
.
译文:
连接
连接方法允许一个线程等待另外一个线程执行完毕。如果t是正在执行的一个thread对象。
t.join();
引起当前线程停止执行知道t这个线程终止。重载join方法允许程序员指定一段等待时间。然而,同sleep方法一样,join方法也是依赖于系统时间的,因此不要认为join等待的时间会和你指定的一模一样。同sleep方法一样,join返回一个中断如果捕获到一个interruptedException异常。
The SimpleThreads Example
The following example brings together some of the concepts of this section. SimpleThreads
consists of two threads. The first is the main thread that every Java application has. The main thread creates a new thread from the Runnable
object,MessageLoop
, and waits for it to finish. If the MessageLoop
thread takes too long to finish, the main thread interrupts it.
The MessageLoop
thread prints out a series of messages. If interrupted before it has printed all its messages, theMessageLoop
thread prints a message and exits.
public class SimpleThreads { // 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(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!"); }}
1 public class SimpleThreads { 2 3 // Display a message, preceded by 4 // the name of the current thread 5 static void threadMessage(String message) { 6 String threadName = 7 Thread.currentThread().getName(); 8 System.out.format("%s: %s%n", 9 threadName,10 message);11 }12 13 private static class MessageLoop14 implements Runnable {15 public void run() {16 String importantInfo[] = {17 "Mares eat oats",18 "Does eat oats",19 "Little lambs eat ivy",20 "A kid will eat ivy too"21 };22 try {23 for (int i = 0;24 i < importantInfo.length;25 i++) {26 // Pause for 4 seconds27 Thread.sleep(4000);28 // Print a message29 threadMessage(importantInfo[i]);30 }31 } catch (InterruptedException e) {32 threadMessage("I wasn't done!");33 }34 }35 }36 37 public static void main(String args[])38 throws InterruptedException {39 40 // Delay, in milliseconds before41 // we interrupt MessageLoop42 // thread (default one hour).43 long patience = 1000 * 60 * 60;44 45 // If command line argument46 // present, gives patience47 // in seconds.48 if (args.length > 0) {49 try {50 patience = Long.parseLong(args[0]) * 1000;51 } catch (NumberFormatException e) {52 System.err.println("Argument must be an integer.");53 System.exit(1);54 }55 }56 57 threadMessage("Starting MessageLoop thread");58 long startTime = System.currentTimeMillis();59 Thread t = new Thread(new MessageLoop());60 t.start();61 62 threadMessage("Waiting for MessageLoop thread to finish");63 // loop until MessageLoop64 // thread exits65 while (t.isAlive()) {66 threadMessage("Still waiting...");67 // Wait maximum of 1 second68 // for MessageLoop thread69 // to finish.70 t.join(1000);71 if (((System.currentTimeMillis() - startTime) > patience)72 && t.isAlive()) {73 threadMessage("Tired of waiting!");74 t.interrupt();75 // Shouldn't be long now76 // -- wait indefinitely77 t.join();78 }79 }80 threadMessage("Finally!");81 }82 }
养眼是必须滴^^.
<script type="text/javascript"><!--google_ad_client = "ca-pub-1944176156128447";/* cnblogs 首页横幅 */google_ad_slot = "5419468456";google_ad_width = 728;google_ad_height = 90;//--></script><script type="text/javascript" src="http://pagead2.googlesyndication.com/pagead/show_ads.js"></script>
- 【翻译六】java
- Java Security Architecture--Java安全体系技术文档翻译(六)
- 【六级】:六级翻译复习
- Rails Cookbook翻译(六)
- masterminds of programming 翻译 (六)
- Asynchronous Method Invocation 【翻译】 (六)
- V4L2文档翻译(六)
- V4L2文档翻译(六)
- Agile Web Development with Rails 翻译(六)
- Programming WCF Services翻译笔记(六)
- [翻译]了解ASP.NET底层架构(六)
- 历年六级词汇翻译总结
- Highcharts翻译系列六:legend 图例选项
- sqlalchemy文档资料翻译(六)
- Highcharts翻译系列六:legend 图例选项
- zookeeper系列(六) 官方翻译简介
- Theano Tutorial文档翻译(六) - 条件
- Flume官方文档翻译之(六)
- keil MDK中如何生成*.bin格式的文件
- 用来简化开发任务的20个JavaScript类库
- HTTP 错误 500.19 - Internal Server Error
- 2014版tomcat7配置管理员帐号密码
- hibernate配置属性hbm2ddl.auto解析
- 【翻译六】java
- Activity Action
- FTP协议过程分析
- android调试】R cannot be resolved to a variable) R.java 不能自动生成
- 关于Python中单引号、双引号和三引号的区别
- STM32启动模式及IAP
- Android开源资源(开发备忘)
- Oracle分析函数总结(3)- 数值分布 - cume_dist,percent_rank,ntile,percentile_disc,percentile_cont,ratio_to_report
- myeclipse 彻底让烦人的各种验证消失 让你的开发速度飞快