《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运行结束
分享到:
相关推荐
Java线程学习笔记涉及了Java多线程编程的多个关键知识点,本篇知识点整理将详细解释每个概念及其在Java中的实现方式。 基本知识部分包含了Java线程编程的基础内容,它们是并发编程的基石。 任务Runnable是一个接口...
Java线程是多任务编程的重要组成部分,它允许程序同时执行多个独立的代码片段,从而提高程序的效率和响应性。本文将深入探讨Java线程的概念、原理以及如何在实际编程中进行有效管理。 首先,我们要了解操作系统中的...
### Java多线程学习笔记 #### 一、线程的基本概念 在计算机科学中,**线程**(Thread)是程序执行流的最小单位。一个标准的程序只能做一件事情,而通过多线程技术,可以让程序同时处理多个任务。在Java中,线程是...
Java提供了Thread类的一些方法来控制线程,如sleep()使线程暂停指定时间,yield()让当前线程暂停并让其他相同优先级的线程有机会运行,join()使当前线程等待指定线程结束后再继续。 同步机制是Java多线程中防止数据...
3. **多线程改进**:JDK 7提供了`Fork/Join`框架,这是一种基于工作窃取算法的并行编程模型,用于高效地执行大量可分解的任务。 4. **try-with-resources语句**:这个新特性允许自动关闭实现了`AutoCloseable`接口...
- `join()`方法使主线程等待子线程结束。 - `yield()`方法让当前线程暂停,让其他线程有机会执行。 4. **线程同步** - 当多个线程访问共享资源时,需要进行同步控制,防止数据不一致。 - `synchronized`关键字...
- **pthread_exit**:线程结束并返回退出状态码,joinable线程需要被`pthread_join`回收资源。 - **pthread_join**:等待指定线程结束并回收其资源。 了解并掌握这些多线程的基本操作对于编写高效并发应用程序至...
此外,`Thread.join()`方法允许一个线程等待另一个线程完成其执行,而`Thread.sleep(long millis)`则让当前线程暂停指定的毫秒数。 在`day24_Thread`和`day23_Thread`的文件中,可能涵盖了线程的优先级、守护线程、...
【UNIX多线程学习笔记】 在UNIX操作系统中,多线程是一种重要的编程模型,它允许多个执行流在单个进程中并发运行。多线程带来了许多优势,包括提高应用程序响应速度,充分利用多CPU系统的资源,以及优化程序结构,...
这份"C++多线程学习笔记1"涵盖了基础到进阶的多线程概念,旨在帮助初学者快速掌握这一关键技能。 首先,C++11引入了对多线程的支持,引入了`<thread>`库,使得创建和管理线程变得简单。创建一个新的线程可以使用`...
本篇学习笔记主要涵盖了线程基础、threading模块的使用以及线程同步控制。 首先,线程是操作系统分配CPU执行时间的基本单位,一个进程可以包含多个线程。在Python3中,线程的状态主要包括新建、就绪、运行、死亡、...
《Java JDK 8学习笔记》是由林信良教授在2015年3月出版的一本详尽解析Java SE 8新特性的书籍,由清华大学出版社发行。这本书共计643页,内容完整且清晰,包含目录和书签,便于读者高效地查阅和学习。 在Java JDK 8...
这份"java_Java_学习笔记.zip"包含了丰富的Java基础知识,对于初学者来说是极好的参考资料。以下是一些主要的知识点概述: 1. **Java简介**: - Java由Sun Microsystems开发,后被Oracle公司收购。 - Java的设计...
在Linux中,线程的创建和管理主要通过`pthread`库实现,其中`pthread_create()`用于创建新线程,`pthread_join()`用于等待线程结束。 总之,理解和掌握Linux下的进程和线程创建及管理对于开发高性能和高并发的应用...
### CoreJava学习笔记 #### 一、JAVA特点与运行原理 **JAVA特点:** 1. **简单性**:Java的设计者们将C++语言中许多不易理解和容易混淆的部分去除,使得Java更容易理解与掌握。 2. **面向对象**:Java几乎一切都...
这份"Java基础学习笔记.zip"包含了多个主题,涵盖了Java语言的基础到进阶内容,非常适合初学者和有经验的开发者复习巩固。 首先,我们来看"day03【List、Set】-笔记.pdf",这部分主要讲解了Java集合框架中的两种...
2. **并发基础**:Java并发编程的基础包括`Thread.start()`启动线程,`Thread.join()`等待线程结束,以及`Thread.sleep()`让当前线程暂停一段时间。 3. **同步机制**:Java提供了多种同步机制,如`synchronized`...
Java提供了四种访问修饰符:`public`、`private`、`protected`和`default`,用于控制类、方法和变量的可见性。 ##### 6.7 构造方法 构造方法是一种特殊的方法,用于初始化对象。 ##### 6.8 封装 封装是指隐藏...
- **题3**:模拟三个线程(代表老师)分发学习笔记,可以使用synchronized关键字或Lock接口(如ReentrantLock)确保线程安全地分配资源。 8. **实验结果和分析**: 实验的结果将展示线程并发执行的特点,例如线程...