`
xiasheng
  • 浏览: 70645 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

线程的调度—合并

阅读更多
线程的合并的含义就是将几个并行线程的线程合并为一个单线程执行,应用场景是当一个线程必须等待另一个线程执行完毕才能执行时可以使用join方法。
 
join为非静态方法,定义如下:
void join()    
    等待该线程终止。    
void join(long millis)    
    等待该线程终止的时间最长为 millis 毫秒。    
void join(long millis, int nanos)    
    等待该线程终止的时间最长为 millis 毫秒 + nanos 纳秒。
 
/**
* Java线程:线程的调度-合并
*
* @author leizhimin 2009-11-4 9:02:40
*/

public class Test {
        public static void main(String[] args) {
                Thread t1 = 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次执行!
线程1第0次执行!
主线程第3次执行!
线程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次执行!

Process finished with exit code 0

 

 

 

分享到:
评论

相关推荐

    片上多处理器系统的多线程调度策略.pdf

    【片上多处理器系统的多线程调度策略】 随着半导体技术的飞速发展,片上多处理器(Chip Multi-Processor,CMP)系统已经成为现代计算机体系结构的重要组成部分。CMP系统集成了多个处理器核心,允许同时处理多个任务...

    ApplicationDemo, RxJava 各种操作符(包括线程调度)的使用范例.zip

    在 "ApplicationDemo, RxJava 各种操作符(包括线程调度)的使用范例" 中,我们将会探讨 RxJava 的核心概念以及一些关键操作符和线程调度器的用法。 首先,让我们理解什么是可观测序列。在 RxJava 中,数据通过一个...

    Java多线程编程总结

    Java线程:线程的调度-合并 Java线程:线程的调度-守护线程 Java线程:线程的同步-同步方法 Java线程:线程的同步-同步块 Java线程:并发协作-生产者消费者模型 Java线程:并发协作-死锁 Java线程:volatile关键字 ...

    Java多线程的调度_动力节点Java学院整理

    Java多线程调度方法 在 Java 中,多线程的调度是指控制多个线程执行的先后次序。下面将介绍四种常见的 Java 多线程调度方法。 方法一:设置线程优先级 Java.lang.Thread 提供了 setPriority(int newPriority) ...

    Linux超线程感知的调度算法研究.pdf

    性能评测是评估超线程调度优化效果的关键。通过基准测试和实际应用测试,可以确定不同调度策略对系统性能的影响,进而优化调度算法。同时,还需要考虑能源效率和散热问题,因为更高的处理器利用率可能导致更多的能量...

    掌握线程编程技术(Java程序设计)

    首先,线程调度机制是操作系统用来决定哪个线程应该被分配CPU时间的关键部分。Java提供两种线程调度策略:抢占式调度和协同式调度。抢占式调度允许高优先级的线程中断低优先级线程的执行,而协同式调度则由线程自己...

    线程池管理多线程上传

    - **线程调度**:线程池会根据预设策略决定何时运行新任务,可能立即执行或等待其他任务完成。 - **关闭线程池**:调用`shutdown()`或`shutdownNow()`方法,停止接收新任务,正在执行的任务会继续完成,已提交但未...

    java多线程笔记

    线程调度包括多种策略,如休眠(`sleep()`),通过指定时间使线程暂停;优先级(`setPriority()`),允许为线程设置优先级以影响调度;让步(`yield()`),让当前运行的线程暂停,给其他线程执行机会;合并(线程...

    多线程案例,多线程教程

    1. 线程是操作系统调度的基本单位,一个进程中可以有多个线程并行执行。相比于单线程,多线程可以充分利用多核CPU资源,提高程序的并发性。 2. 主线程:每个程序都有一个主线程,它是程序运行的起点,其他线程由主线...

    java多线程导出excel(千万级别)优化

    4. 合并文件:所有线程完成任务后,将生成的CSV文件合并成一个大文件,这通常可以通过读取每个文件并将其内容追加到目标文件来实现。 5. 清理:关闭线程池,删除临时CSV文件。 在整个过程中,需要注意以下优化点: ...

    Java-多线程教学文档

    Java线程调度包括线程的休眠、优先级、让步、合并和守护线程等策略。线程优先级可以调整线程执行的相对顺序,但不保证绝对的执行顺序。守护线程是一种服务线程,当所有非守护线程结束时,JVM会退出,即使仍有守护...

    多线程使用同一数组测试

    测试多线程程序的正确性是一个挑战,因为它涉及到复杂的线程调度和数据竞争情况。尽管30万次运算没有出现问题,但为了确保程序的健壮性,应设计全面的测试用例,包括压力测试、长时间运行测试以及各种并发情况的模拟...

    linux 多线程合集

    6. **调度策略**:Linux线程调度遵循进程调度的原则,可以是抢占式或非抢占式。线程调度器会根据优先级、时间片等策略决定哪个线程应该获得CPU执行权。 7. **性能考虑**:多线程并非总是能提高程序性能,过多的线程...

    C#文件多线程复制代码

    然而,为了更有效地管理和调度线程,我们通常会使用线程池(ThreadPool)。线程池可以自动管理线程的生命周期,避免频繁创建和销毁线程带来的开销。要使用线程池,我们可以调用`System.Threading.ThreadPool....

    yolov5目标检测多线程C++部署

    5. **结果合并**:所有线程完成预测后,需要将结果合并到一起。这里需要注意同步问题,避免因并发写入导致的数据竞争。可以使用互斥锁(mutex)来保护共享资源。 6. **后处理**:最后,对检测结果进行非极大值抑制...

    POSIX多线程程序设计

    - 线程合并:如何使用pthread_join()函数等待线程结束并回收资源。 - 线程属性:如何设置和获取线程属性,包括堆栈大小、调度策略等。 - 线程局部存储:为线程提供具有线程局部存储功能的变量,每个线程都拥有该变量...

    java线程文档大全

    4. **线程合并与让步**:join()方法用于合并线程,让当前线程等待指定线程结束后再继续执行。yield()方法则是让当前线程暂停,让其他同优先级的线程有机会执行。 5. **守护线程(Daemon)**:守护线程是一种特殊的...

    多线程文件扫描

    在IT领域,多线程是一种常见的编程技术,用于提高程序的执行效率,特别是在...对于这个源码,如果你有能力进行改造,可以考虑添加更高级的功能,如过滤特定类型的文件、支持取消扫描、显示进度条或优化线程调度策略等。

    多线程下载+进度条

    1. **DownloadManager**:一个类,负责任务的创建、调度和管理,包括线程的启动和数据的合并。 2. **DownloadThread**:每个线程的实现,负责从服务器下载指定的数据块。 3. **ProgressUpdater**:一个组件,用于...

    易语言多线程下载源码

    8. **多任务调度**:在易语言中,可以通过事件驱动的方式管理多个线程,例如,每当一个线程完成下载一部分文件后,触发一个事件,主线程接收到事件后,启动下一个线程继续下载。 通过理解以上知识点,并结合提供的...

Global site tag (gtag.js) - Google Analytics