Java多线程-线程的调度(合并)

摘要:
线程合并的含义是将多个并行线程的线程合并为一个线程执行。应用程序场景是当一个线程必须等待另一个线程完成执行时,使用join方法。Voidjoin:等待线程终止的最长时间为毫秒+纳秒。包装cn。螺纹;/***线程调度(合并)**@author Lin Jiqin**@version1.02013-7-24 AM 09:49:47*/publicclassThreadJoin{publicstaticvoidmain{ThreadJoin=newThreadJon();Threadt1=join.newMyThread1();t1.start();用于{System.out.println(“主线程的第一次执行”+i+“第二次执行!”);如果(i˃2)try{//t1线程被合并到主线程中。主线程停止执行进程,转而执行t1线程,直到t1执行完成主线程第0次执行!主线程第六次执行!主线程第14次执行!

线程的合并的含义就是将几个并行线程的线程合并为一个单线程执行,应用场景是当一个线程必须等待另一个线程执行完毕才能执行时可以使用join方法。

join为非静态方法,定义如下:
void join(): 等待该线程终止。
void join(long millis): 等待该线程终止的时间最长为 millis 毫秒。
void join(long millis, int nanos): 等待该线程终止的时间最长为 millis 毫秒 + nanos 纳秒。

复制代码
package cn.thread;
/**
 * 线程的调度(合并)
 * 
 * @author 林计钦
 * @version 1.0 2013-7-24 上午09:49:47
 */
public class ThreadJoin {
    public static void main(String[] args) {
        ThreadJoin join = new ThreadJoin();
        Thread t1 = join.new MyThread1();
        t1.start();
        for (int i = 0; i < 20; i++) {
            System.out.println("主线程第" + i + "次执行!");
            if (i > 2)
                try {
                    // t1线程合并到主线程中,主线程停止执行过程,转而执行t1线程,直到t1执行完毕后继续。
                    t1.join();
                } catch (InterruptedException e) {
                    e.printStackTrace();
                }
        }
    }
    class MyThread1 extends Thread {
        public void run() {
            for (int i = 0; i < 10; i++) {
                System.out.println("线程1第" + i + "次执行!");
            }
        }
    }
}
复制代码
复制代码
主线程第0次执行!
主线程第1次执行!
主线程第2次执行!
主线程第3次执行!
线程1第0次执行!
线程1第1次执行!
线程1第2次执行!
线程1第3次执行!
线程1第4次执行!
线程1第5次执行!
线程1第6次执行!
线程1第7次执行!
线程1第8次执行!
线程1第9次执行!
主线程第4次执行!
主线程第5次执行!
主线程第6次执行!
主线程第7次执行!
主线程第8次执行!
主线程第9次执行!
主线程第10次执行!
主线程第11次执行!
主线程第12次执行!
主线程第13次执行!
主线程第14次执行!
主线程第15次执行!
主线程第16次执行!
主线程第17次执行!
主线程第18次执行!
主线程第19次执行!
复制代码

本文转自http://www.cnblogs.com/linjiqin/p/3209967.html 感谢作者

免责声明:文章转载自《Java多线程-线程的调度(合并)》仅用于学习参考。如对内容有疑问,请及时联系本站处理。

上篇批处理实现自动删除过期文件的定期操作inotify下篇

宿迁高防,2C2G15M,22元/月;香港BGP,2C5G5M,25元/月 雨云优惠码:MjYwNzM=

相关文章

MFC 消息类型

---恢复内容开始--- 1、命令消息(WM_COMMAND) 所有派生自 CCmdTarget 的类都有资格接受WM_COMMAND。 2、Window消息(WM_xxx) 所有派生自 CWnd 的类都有资格接受 WM_xxx。 3、控件消息(WM_NOTIFY) 控件向其父窗口通知消息。 消息处理 1、WM_xxx 消息处理 窗口类(自身)处理→基类处...

SendMessageTimeout 的使用

在WINDOW编程中,发送消息的常用API有SendMessage,PostMessage,PostThreadMessage。 一般每个线程有两个队列:一个用来接收通过Send函数的消息,另外一个队列接收通过Post函数的消息。该两个函数的基本区别是:一个函数需要等待返回的,相当于函数调用,这个是SendMessage;另外一个是将消息放到对方的队列中,...

libevent 和 libev 提高网络应用性能

构建现代的服务器应用程序需要以某种方法同时接收数百、数千甚至数万个事件,无论它们是内部请求还是网络连接,都要有效地处理它们的操作。有许多解决方 案,但是 libevent 库和 libev 库能够大大提高性能和事件处理能力。在本文中,我们要讨论在 UNIX® 应用程序中使用和部署这些解决方案所用的基本结构和方法。libev 和 libevent 都可以在高...

【转】Javascript异步编程之setTimeout与setInterval

Javascript异步编程之setTimeout与setInterval 转自:http://www.tuicool.com/articles/Ebueua 在谈到异步编程时,本人最主要会从以下三个方面来总结异步编程(注意:特别解释:是总结,本人也是菜鸟,所以总结不好的,请各位大牛多多原谅!) 1. setTimeout与setInterval详细分析基...

Jmeter-测试计划元件

打开Jmeter页面,默认显示测试计划和工作台: 1、测试计划: 用来描述一个性能测试,包含与本次性能测试所有相关的功能。也就说性能测试的所有内容是于基于一个计划的。 右键单击“测试计划”弹出菜单: 注意: 测试计划中“函数测试模式”复选框,如果被选择,它会使Jmeter记录来自服务器返回的每个取样的数据。如果你在测试监听器中选择一个文件,这个数据将被写...

黑马程序员——JAVA学习笔记六(多线程)

1,    什么是多线程?一个程序可以执行多个任务,每一个任务称为一个线程,运行多个线程的程序称为多线程程序。 进程:正在进行中的程序(直译)。 线程:进程中一个负责程序执行的控制单元(执行路径)。   多线程的好处:解决了多部分代码同时运行的问题。多线程的弊端:线程太多,会导致效率的降低。 其实,多个应用程序同时执行都是CPU在做着快速的切换完成的。这个...