`
woxiaoe
  • 浏览: 284485 次
  • 性别: 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中的实现方式。 基本知识部分包含了Java线程编程的基础内容,它们是并发编程的基石。 任务Runnable是一个接口...

    java多线程笔记

    Java线程是多任务编程的重要组成部分,它允许程序同时执行多个独立的代码片段,从而提高程序的效率和响应性。本文将深入探讨Java线程的概念、原理以及如何在实际编程中进行有效管理。 首先,我们要了解操作系统中的...

    Java多线程学习笔记

    ### Java多线程学习笔记 #### 一、线程的基本概念 在计算机科学中,**线程**(Thread)是程序执行流的最小单位。一个标准的程序只能做一件事情,而通过多线程技术,可以让程序同时处理多个任务。在Java中,线程是...

    java多线程学习笔记

    Java提供了Thread类的一些方法来控制线程,如sleep()使线程暂停指定时间,yield()让当前线程暂停并让其他相同优先级的线程有机会运行,join()使当前线程等待指定线程结束后再继续。 同步机制是Java多线程中防止数据...

    Java JDK 7学习笔记 PDF

    3. **多线程改进**:JDK 7提供了`Fork/Join`框架,这是一种基于工作窃取算法的并行编程模型,用于高效地执行大量可分解的任务。 4. **try-with-resources语句**:这个新特性允许自动关闭实现了`AutoCloseable`接口...

    Java多线程详解(超详细)_狂神说笔记完整版_项目代码_适合小白随课程学习

    - `join()`方法使主线程等待子线程结束。 - `yield()`方法让当前线程暂停,让其他线程有机会执行。 4. **线程同步** - 当多个线程访问共享资源时,需要进行同步控制,防止数据不一致。 - `synchronized`关键字...

    多线程学习笔记,关于创建线程,删除线程等相关指令的应用。

    - **pthread_exit**:线程结束并返回退出状态码,joinable线程需要被`pthread_join`回收资源。 - **pthread_join**:等待指定线程结束并回收其资源。 了解并掌握这些多线程的基本操作对于编写高效并发应用程序至...

    java多线程代码笔记

    此外,`Thread.join()`方法允许一个线程等待另一个线程完成其执行,而`Thread.sleep(long millis)`则让当前线程暂停指定的毫秒数。 在`day24_Thread`和`day23_Thread`的文件中,可能涵盖了线程的优先级、守护线程、...

    UNIX多线程学习笔记

    【UNIX多线程学习笔记】 在UNIX操作系统中,多线程是一种重要的编程模型,它允许多个执行流在单个进程中并发运行。多线程带来了许多优势,包括提高应用程序响应速度,充分利用多CPU系统的资源,以及优化程序结构,...

    C++多线程学习笔记1

    这份"C++多线程学习笔记1"涵盖了基础到进阶的多线程概念,旨在帮助初学者快速掌握这一关键技能。 首先,C++11引入了对多线程的支持,引入了`<thread>`库,使得创建和管理线程变得简单。创建一个新的线程可以使用`...

    Python3的多线程学习笔记[定义].pdf

    本篇学习笔记主要涵盖了线程基础、threading模块的使用以及线程同步控制。 首先,线程是操作系统分配CPU执行时间的基本单位,一个进程可以包含多个线程。在Python3中,线程的状态主要包括新建、就绪、运行、死亡、...

    Java JDK 8学习笔记 带完整书签(不是页码书签哦)

    《Java JDK 8学习笔记》是由林信良教授在2015年3月出版的一本详尽解析Java SE 8新特性的书籍,由清华大学出版社发行。这本书共计643页,内容完整且清晰,包含目录和书签,便于读者高效地查阅和学习。 在Java JDK 8...

    java_Java_学习笔记.zip

    这份"java_Java_学习笔记.zip"包含了丰富的Java基础知识,对于初学者来说是极好的参考资料。以下是一些主要的知识点概述: 1. **Java简介**: - Java由Sun Microsystems开发,后被Oracle公司收购。 - Java的设计...

    Linux 进程 线程学习笔记

    在Linux中,线程的创建和管理主要通过`pthread`库实现,其中`pthread_create()`用于创建新线程,`pthread_join()`用于等待线程结束。 总之,理解和掌握Linux下的进程和线程创建及管理对于开发高性能和高并发的应用...

    CoreJava学习笔记

    ### CoreJava学习笔记 #### 一、JAVA特点与运行原理 **JAVA特点:** 1. **简单性**:Java的设计者们将C++语言中许多不易理解和容易混淆的部分去除,使得Java更容易理解与掌握。 2. **面向对象**:Java几乎一切都...

    Java基础学习笔记.zip

    这份"Java基础学习笔记.zip"包含了多个主题,涵盖了Java语言的基础到进阶内容,非常适合初学者和有经验的开发者复习巩固。 首先,我们来看"day03【List、Set】-笔记.pdf",这部分主要讲解了Java集合框架中的两种...

    Java并发编程学习笔记.

    2. **并发基础**:Java并发编程的基础包括`Thread.start()`启动线程,`Thread.join()`等待线程结束,以及`Thread.sleep()`让当前线程暂停一段时间。 3. **同步机制**:Java提供了多种同步机制,如`synchronized`...

    java笔记 java笔记

    Java提供了四种访问修饰符:`public`、`private`、`protected`和`default`,用于控制类、方法和变量的可见性。 ##### 6.7 构造方法 构造方法是一种特殊的方法,用于初始化对象。 ##### 6.8 封装 封装是指隐藏...

    Java实验9多线程设计.doc

    - **题3**:模拟三个线程(代表老师)分发学习笔记,可以使用synchronized关键字或Lock接口(如ReentrantLock)确保线程安全地分配资源。 8. **实验结果和分析**: 实验的结果将展示线程并发执行的特点,例如线程...

Global site tag (gtag.js) - Google Analytics