多线程学习------join方法
package com.zzl.thread;
/**
* join
* 当A线程遇到了B线程的.join()方法的时候,A就会等待。等B线程执行完,A线程才会执行。
*
* join可以用来临时加入线程执行
*/
class JoinRunnable implements Runnable{
@Override
public void run() {
for(int i = 0;i < 10;i++){
System.out.println(Thread.currentThread().getName()+"......."+i);
}
}
}
public class JoinDemo {
public static void main(String[] args) {
JoinRunnable r =new JoinRunnable();
Thread t1 = new Thread(r);
Thread t2 = new Thread(r);
t1.start();
try {
t1.join();
} catch (InterruptedException e) {
e.printStackTrace();
}
t2.start();
}
}
把 try catch注释掉,运行效果如下(两个线程交替抢占cpu资源):
Thread-0.......0
Thread-0.......1
Thread-1.......0
Thread-1.......1
Thread-1.......2
Thread-0.......2
Thread-1.......3
Thread-0.......3
Thread-0.......4
Thread-0.......5
Thread-0.......6
Thread-0.......7
Thread-0.......8
Thread-0.......9
Thread-1.......4
Thread-1.......5
Thread-1.......6
Thread-1.......7
Thread-1.......8
Thread-1.......9
如果线程 t1 start后调用了 t1.join(),运行效果如下(t1线程先运行完,然后运行t2线程):
Thread-0.......0
Thread-0.......1
Thread-0.......2
Thread-0.......3
Thread-0.......4
Thread-0.......5
Thread-0.......6
Thread-0.......7
Thread-0.......8
Thread-0.......9
Thread-1.......0
Thread-1.......1
Thread-1.......2
Thread-1.......3
Thread-1.......4
Thread-1.......5
Thread-1.......6
Thread-1.......7
Thread-1.......8
Thread-1.......9
分享到:
相关推荐
关于C#多线程学习,本篇将深入探讨在C#中如何管理和操作线程,包括启动、停止、暂停线程、调整线程优先级等关键知识点。 ### 启动线程 在C#中,启动一个新线程通常通过`Thread`类实现。创建一个新的线程对象时,...
在"C++多线程学习"这个主题中,我们主要探讨的是如何在C++环境中创建和管理线程,以及解决并发访问时可能出现的问题。 一、C++11及后续版本中的多线程支持 自C++11标准开始,C++提供了内置的多线程库`<thread>`,...
### Java线程学习知识点 #### 一、Java线程概览 - **定义与作用**:线程是在程序中独立且并发执行的路径。在Java中,线程被设计为语言的一部分,而不是作为操作系统的底层工具。每个Java程序至少包含一个主线程,在...
Java提供了一些方法来控制线程状态,如`sleep()`使线程暂停执行一段时间,`join()`等待指定线程结束,`yield()`让当前线程暂停,让其他相同优先级的线程有机会执行,`interrupt()`用于中断线程。 同步是Java线程...
- `Join()`:等待线程完成。 - `Abort()`:强制终止线程(应谨慎使用)。 ### 3. 线程同步 线程同步是确保多个线程安全访问共享资源的过程。C#提供了多种同步机制: - **Mutex**:互斥锁,同一时间只允许一个线程...
【C#多线程学习(二)】 在C#编程中,多线程是一个重要的概念,它允许程序同时执行多个任务,从而提高了程序的效率和响应性。在本篇文章中,我们将深入探讨如何操纵线程,包括线程的状态以及线程优先级。 首先,...
总的来说,Java多线程学习涵盖了线程的创建、同步、通信、调度以及异常处理等多个方面,深入理解和掌握这些知识点对于提升Java程序的性能和复杂性至关重要。通过阅读提供的"Java多线程.pdf"文档,你可以进一步了解和...
### C#多线程学习详解 #### 一、多线程的基本概念 ##### 1. 什么是进程? 进程是程序的一次动态执行过程,它包含了正在运行的程序所需的内存、系统资源以及执行上下文。简单来说,当你启动一个程序时,操作系统会...
综上所述,这个“线程学习小Test”通过几个具体的Java源代码文件,深入浅出地展示了Java中线程同步的重要方法及其应用。通过学习和实践这些示例,开发者能够更好地理解和掌握多线程环境下的线程同步策略,提升并发...
### 多线程学习文档知识点总结 #### 一、线程的基本概念及关系 ##### 进程(Process) - **定义**:进程是Windows系统中的一个基本概念,它包含了运行程序所需的所有资源。 - **特性**: - 相对独立性:一个进程...
Java线程API是Java编程语言中的一个重要组成部分,它允许开发者在一个程序中同时执行多个任务,提高了应用程序的效率和响应性。...通过深入阅读"Java线程.pdf"文档,可以进一步学习这些概念的细节和实践应用。
在C#编程中,线程是并发执行任务的基本单元,理解和掌握线程的使用对于开发高效、响应迅速的多任务应用程序至关重要。本手册将深入探讨C#中的线程概念、创建与...通过不断实践和学习,你将能更好地驾驭C#的线程世界。
- `join()`方法允许一个线程等待另一个线程执行完毕。 #### 六、线程安全与同步 - **线程安全问题**: - 数据竞争: 多个线程同时修改同一个变量可能导致不一致的结果。 - 死锁: 两个或多个线程因争夺资源而造成...
C#多线程学习(二)如何操纵一个线程 在现代软件开发中,多线程编程是一个非常重要的概念,它允许程序同时执行两个或多个部分,以提高应用程序的效率和响应能力。C# 作为一门现代编程语言,提供了强大的多线程支持...
本资源"JAVA线程学习(源代码)"提供了关于Java线程的源代码示例,帮助我们深入理解和实践线程的使用。 首先,我们要理解Java中的线程模型。Java线程由`java.lang.Thread`类或`java.util.concurrent.Executor`框架来...
最后,"Linux多线程学习(五)"可能对这些知识进行了综合应用或者讨论了高级话题,如死锁预防和线程池的实现。 掌握这些多线程编程技术对于开发高效的Linux应用程序至关重要,无论是系统编程、网络服务还是并行计算...
Java线程学习笔记涉及了Java多线程编程的多个关键知识点,本篇知识点整理将详细解释每个概念及其在Java中的实现方式。 基本知识部分包含了Java线程编程的基础内容,它们是并发编程的基石。 任务Runnable是一个接口...
在这个"vc++多线程学习实例"中,我们将探讨如何在VC++环境中实现和管理多线程。 多线程是操作系统中的一个概念,它允许一个程序同时执行多个不同的任务。在单核处理器时代,多线程通过时间片轮转的方式实现了并发...
Java是世界上最流行的编程语言之一,尤其在企业级应用开发中占据主导地位。多线程是Java中的核心特性,它使得程序能够同时...多线程-join-daemon-同步.avi"的视频教程,你可以深入学习这些概念,并通过实例加深理解。