`
woxiaoe
  • 浏览: 276564 次
  • 性别: Icon_minigender_1
  • 来自: 长沙
社区版块
存档分类
最新评论

Java线程学习笔记(四)线程join

    博客分类:
  • Java
阅读更多

《Java编程思想》的一个例子,如果某个线程在另一个线程t上调用t.join(),此线程将被挂起,直到目标线程t结束才恢复。

 

package com.woxiaoe.study.thread;
/**
 * 测试线程的join
 * @author 小e
 *
 * 2010-4-24 下午07:49:45
 */

class Sleeper extends Thread{
	private int sleepTimes;
	
	public Sleeper(int sleepTimes, String name) {
		super(name);
		this.sleepTimes = sleepTimes;
	}
	@Override
	public void run() {
		System.out.println(getName() + " 开始休眠");
		try {
			sleep(sleepTimes);
		} catch (InterruptedException e) {
			System.out.println(getName() + "被打断了,isInterrupted:" + isInterrupted());
		}
	}
	
}
class Joiner extends Thread{
	private Sleeper sleeper;
	public Joiner(Sleeper sleeper,String name) {
		super(name);
		this.sleeper = sleeper;
	}
	@Override
	public void run() {
		System.out.println(sleeper.getName() + "开始休眠");
		try {
			sleeper.join();
		} catch (InterruptedException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
		System.out.println(sleeper.getName() + "休眠结束");
		System.out.println(getName() + "运行结束");
	}
	
}
public class Joining {
	
	public static void main(String[] args) {
		Sleeper 
			s1 = new Sleeper(2000, "s1"),
			s2 = new Sleeper(2000, "s2");
		
		Joiner
			j1 = new Joiner(s1, "j1"),
			j2 = new Joiner(s2, "j2");
		
		j2.start();
		j1.start();
		
	}

}

 output:

s2开始休眠

s2休眠结束

j2运行结束

s1开始休眠

s1休眠结束

j1运行结束

 


分享到:
评论
1 楼 mychaoyue2011 2014-01-07  
在本地执行了几遍,结果都是:
s2开始休眠
s1开始休眠
s2休眠结束
s1休眠结束
j2运行结束
j1运行结束

但是在:
j2.start(); 
j1.start(); 
间加上 joiner2.join();即可

相关推荐

    java线程学习笔记

    java线程学习笔记

    java多线程笔记

    Java线程:概念与原理 2 一、操作系统中线程和进程的概念 2 二、Java中的线程 3 三、Java中关于线程的名词解释 3 四、线程的状态转换和生命周期 4 Java线程:创建与启动 7 Java线程:线程名称的设定及获取 10 Java...

    多线程学习笔记

    多线程学习笔记,通过平时的学习所做的一些笔记,希望对广大同仁有所帮助

    java学习笔记2(多线程)

    java学习笔记2(多线程)java学习笔记2(多线程)

    JAVA 多线程学习笔记

    NULL 博文链接:https://baobeituping.iteye.com/blog/1190260

    java线程 线程学习资料 java线程教程

    java线程 线程 教程 java线程教程 java线程学习资料 本教程有什么内容? 本教程研究了线程的基础知识— 线程是什么、线程为什么有用以及怎么开始编写使用线程的简单 程序。 我们还将研究更复杂的、使用线程的应用...

    java 线程总结笔记

    花费了一上午的时候 写了一些demo。认识到四种线程池的区别。上传到csdn 供以后学习

    线程 JAVA java线程 java线程第3版 java线程第2版第3版合集

    如果你想使用Java,就必须学习线程。 本书的新版本展示了如何利用Java线程工具的全部优势,并介绍了JDK 2线程接口中的最新变化。你将学习如何使用线程来提高效率,如何有效地使用它们,以及如何避免常见的错误。...

    Java多线程笔记

    多线程学习笔记,好资源。包括线程基础等知识多线程学习笔记,好资源。包括线程基础等知识

    Java线程讲解Java线程讲解

    Java线程讲解Java线程讲解Java线程讲解Java线程讲解Java线程讲解Java线程讲解Java线程讲解Java线程讲解Java线程讲解Java线程讲解

    Java线程详解大全

    Java线程Java线程Java线程Java线程Java线程Java线程Java线程Java线程Java线程Java线程Java线程Java线程Java线程Java线程Java线程

    java多线程学习笔记

    这篇文档和对应的源代码 博文链接:https://interper56-sohu-com.iteye.com/blog/172303

    java多线程编程总结

    Java线程:概念与原理 Java线程:创建与启动 Java线程:线程栈模型与线程的变量 Java线程:线程状态的转换 Java线程:线程的同步与锁 Java线程:线程的交互 Java线程:线程的调度-休眠 Java线程:线程的调度-优先级 ...

    Java线程Java线程Java线程Java线程

    Java线程Java线程Java线程Java线程Java线程Java线程

    Java并发编程学习笔记 pdf 多线程编程

    Java并发编程学习笔记,研究JAVA并发多线程编程的一本教程,使用并发技术可以开发出并行算法,充分利用多处理器的计算能力,避免硬件资源浪费。目前,在JAVA并发编程方面的论述系统且内容详实的技术资料不太多,Java...

    java学习笔记5(java多线程)

    java学习笔记5(java多线程)java学习笔记5(java多线程)

    Java多线程学习笔记

    线程的基本概念 线程的创建和启动 线程的调度和优先级 线程的状态控制 线程同步

Global site tag (gtag.js) - Google Analytics