demo:当启动好几个线程去进行某种长时间的运算时,主线程就有时间完成其他工作。假设主线程结束了其他工作,需要对其子线程的运算结果处理,此时主线程就需要等运算过程结束后才能继续运行。
demo的情况使用线程连接thread join.
引用:http://www.blogjava.net/jnbzwm/articles/330549.html
package com.tang.thread.join; public class JoinTestDemo { public static void main(String[] args) throws InterruptedException { String threadName = Thread.currentThread().getName(); System.out.println(threadName + " start."); CustomThread1 t1 = new CustomThread1(); CustomThread t = new CustomThread(t1); t1.start(); t.start(); t.join(); System.out.println(threadName + " end."); } }
package com.tang.thread.join; public class CustomThread1 extends Thread{ public CustomThread1(){ super("[CustomThread1]Thread"); } @Override public void run() { String threadName = Thread.currentThread().getName(); System.out.println(threadName+" start."); try { for (int i = 0; i < 5; i++) { System.out.println(threadName+" loop at "+i); Thread.sleep(1000); } System.out.println(threadName+"end."); } catch (InterruptedException e) { // TODO Auto-generated catch block e.printStackTrace(); } } }
package com.tang.thread.join; public class CustomThread extends Thread{ CustomThread1 t1; public CustomThread(CustomThread1 t1) { super("[CustomThread]Thread"); this.t1 = t1; } @Override public void run() { String threadName = Thread.currentThread().getName(); System.out.println(threadName+" start."); try { t1.join(); System.out.println(threadName+"end."); } catch (Exception e) { // TODO Auto-generated catch block e.printStackTrace(); } } }
结果1:
main start. main end. [CustomThread1]Thread start. [CustomThread1]Thread loop at 0 [CustomThread1]Thread loop at 1 [CustomThread1]Thread loop at 2 [CustomThread1]Thread loop at 3 [CustomThread1]Thread loop at 4 [CustomThread1]Threadend.
main start. main end. [CustomThread1]Thread start. [CustomThread1]Thread loop at 0 [CustomThread]Thread start. [CustomThread1]Thread loop at 1 [CustomThread1]Thread loop at 2 [CustomThread1]Thread loop at 3 [CustomThread1]Thread loop at 4 [CustomThread1]Threadend. [CustomThread]Threadend.
main start. main end. [CustomThread1]Thread start. [CustomThread1]Thread loop at 0 [CustomThread]Thread start. [CustomThread]Threadend. [CustomThread1]Thread loop at 1 [CustomThread1]Thread loop at 2 [CustomThread1]Thread loop at 3 [CustomThread1]Thread loop at 4 [CustomThread1]Threadend.
main start. [CustomThread1]Thread start. [CustomThread]Thread start. [CustomThread1]Thread loop at 0 [CustomThread1]Thread loop at 1 [CustomThread1]Thread loop at 2 [CustomThread1]Thread loop at 3 [CustomThread1]Thread loop at 4 [CustomThread1]Threadend. [CustomThread]Threadend. main end.
相关推荐
### Java线程学习知识点 #### 一、Java线程概览 - **定义与作用**:线程是在程序中独立且并发执行的路径。在Java中,线程被设计为语言的一部分,而不是作为操作系统的底层工具。每个Java程序至少包含一个主线程,在...
在Java编程语言中,线程是程序执行的基本单元,它允许程序并发地...同时,"Java线程学习和总结.files"目录下的文件可能是与文章相关的辅助资料,例如代码示例或图片。建议结合这些资料一起学习,以获得更全面的知识。
本资源"JAVA线程学习(源代码)"提供了关于Java线程的源代码示例,帮助我们深入理解和实践线程的使用。 首先,我们要理解Java中的线程模型。Java线程由`java.lang.Thread`类或`java.util.concurrent.Executor`框架来...
Java 线程学习笔记 Java 线程创建有两种方法: 1. 继承 Thread 类,重写 run 方法:通过继承 Thread 类并重写 run 方法来创建线程,这种方法可以使线程具有自己的执行逻辑。 2. 实现 Runnable 接口:通过实现 ...
### Java线程学习:深入理解线程生命周期与同步机制 #### 标题解析:Java线程学习 在Java编程语言中,线程是程序执行的基本单位之一,它允许并发执行多个任务,从而提高应用程序的效率和响应性。通过Java线程的...
### Java线程学习教程知识点详解 #### 一、教程概览 - **适用人群**: 本教程主要面向那些已经熟练掌握了Java语言基本语法和应用,但对于多线程和并发编程经验较少的Java开发者。 - **目标**: 学习者通过本教程的...
在"java线程学习一4"这个主题中,我们将会深入探讨Java中的多线程概念,以及如何通过源码理解和使用相关工具进行线程管理。 首先,我们需要理解Java中的线程创建方式。Java提供了两种主要的线程创建方法:继承...
通过学习以上知识点,初学者可以对Java线程有基本的理解,逐步掌握并发编程的核心技能。实践中的线程例子将有助于巩固理论知识,加深对线程工作原理的把握。在学习过程中,不断编写和调试多线程程序,是提升技能的...
本文将深入探讨Java线程的学习要点,帮助你提升在多线程环境下的编程能力。 首先,我们要明白线程的基本概念。线程是操作系统分配CPU时间的基本单元,一个进程中可以有多个线程同时执行任务,这使得程序可以在同一...
本专题资料聚焦于Java线程的学习,包括从基础到进阶的各种知识点。 1. **线程创建方式**:Java提供了两种创建线程的方式,一是通过继承Thread类,重写run()方法;二是实现Runnable接口,然后创建Thread对象并传入...
总的来说,Java多线程学习涵盖了线程的创建、同步、通信、调度以及异常处理等多个方面,深入理解和掌握这些知识点对于提升Java程序的性能和复杂性至关重要。通过阅读提供的"Java多线程.pdf"文档,你可以进一步了解和...
java中多线程下载学习,又新增了断点的实现,可以实现暂停继续下载网络文件的功能
Java多线程学习Java多线程学习Java多线程学习Java多线程学习Java多线程学习Java多线程学习Java多线程学习Java多线程学习Java多线程学习Java多线程学习Java多线程学习Java多线程学习Java多线程学习Java多线程学习Java...
对于学习java线程的初学者是很有用的资料,让自己很快的上手,帮助自己学习很快的知识。。。