`
tangxininjava
  • 浏览: 96682 次
  • 性别: Icon_minigender_1
  • 来自: 遂宁
社区版块
存档分类
最新评论

java线程学习

    博客分类:
  • java
 
阅读更多

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线程学习和总结

    在Java编程语言中,线程是程序执行的基本单元,它允许程序并发地...同时,"Java线程学习和总结.files"目录下的文件可能是与文章相关的辅助资料,例如代码示例或图片。建议结合这些资料一起学习,以获得更全面的知识。

    JAVA线程学习(源代码)

    本资源"JAVA线程学习(源代码)"提供了关于Java线程的源代码示例,帮助我们深入理解和实践线程的使用。 首先,我们要理解Java中的线程模型。Java线程由`java.lang.Thread`类或`java.util.concurrent.Executor`框架来...

    java线程学习笔记

    Java 线程学习笔记 Java 线程创建有两种方法: 1. 继承 Thread 类,重写 run 方法:通过继承 Thread 类并重写 run 方法来创建线程,这种方法可以使线程具有自己的执行逻辑。 2. 实现 Runnable 接口:通过实现 ...

    Java线程学习

    ### Java线程学习:深入理解线程生命周期与同步机制 #### 标题解析:Java线程学习 在Java编程语言中,线程是程序执行的基本单位之一,它允许并发执行多个任务,从而提高应用程序的效率和响应性。通过Java线程的...

    java线程学习教程

    ### Java线程学习教程知识点详解 #### 一、教程概览 - **适用人群**: 本教程主要面向那些已经熟练掌握了Java语言基本语法和应用,但对于多线程和并发编程经验较少的Java开发者。 - **目标**: 学习者通过本教程的...

    java线程学习一4

    在"java线程学习一4"这个主题中,我们将会深入探讨Java中的多线程概念,以及如何通过源码理解和使用相关工具进行线程管理。 首先,我们需要理解Java中的线程创建方式。Java提供了两种主要的线程创建方法:继承...

    经典线程例子——Java线程学习指南

    通过学习以上知识点,初学者可以对Java线程有基本的理解,逐步掌握并发编程的核心技能。实践中的线程例子将有助于巩固理论知识,加深对线程工作原理的把握。在学习过程中,不断编写和调试多线程程序,是提升技能的...

    Java线程学习好资料

    本文将深入探讨Java线程的学习要点,帮助你提升在多线程环境下的编程能力。 首先,我们要明白线程的基本概念。线程是操作系统分配CPU时间的基本单元,一个进程中可以有多个线程同时执行任务,这使得程序可以在同一...

    java线程学习专题资料

    本专题资料聚焦于Java线程的学习,包括从基础到进阶的各种知识点。 1. **线程创建方式**:Java提供了两种创建线程的方式,一是通过继承Thread类,重写run()方法;二是实现Runnable接口,然后创建Thread对象并传入...

    JAVA多线程学习内容

    总的来说,Java多线程学习涵盖了线程的创建、同步、通信、调度以及异常处理等多个方面,深入理解和掌握这些知识点对于提升Java程序的性能和复杂性至关重要。通过阅读提供的"Java多线程.pdf"文档,你可以进一步了解和...

    多线程断点下载(java线程学习)

    java中多线程下载学习,又新增了断点的实现,可以实现暂停继续下载网络文件的功能

    Java多线程学习Java多线程学习Java多线程学习Java多线程学习.txt

    Java多线程学习Java多线程学习Java多线程学习Java多线程学习Java多线程学习Java多线程学习Java多线程学习Java多线程学习Java多线程学习Java多线程学习Java多线程学习Java多线程学习Java多线程学习Java多线程学习Java...

    Java线程学习很有用

    对于学习java线程的初学者是很有用的资料,让自己很快的上手,帮助自己学习很快的知识。。。

Global site tag (gtag.js) - Google Analytics