很长时间对join方法感到疑惑,不明白到底是谁要阻塞,谁要继续执行(线程这部分亟需加强)。今天和一网友交流后疑惑得到解决,在此表示感谢Stephen_Liu。
假如在main方法中有个线程A,执行了A.join(),那么线程A继续执行,而main线程这阻塞在A.join()处,直到线程A执行完毕并正常退出,此时main方法中的A.join()才返回,然后继续执行A.join()后面的代码。
public class ThreadJoin extends Thread {
public static int n = 0;
static synchronized void inc() {
n++;
}
public void run() {
try {
for (int i = 0; i < 10; i++) {
inc();
sleep(3);
}
} catch (InterruptedException e) {
e.printStackTrace();
}
}
public static void main(String[] args) throws Exception {
Thread thread[] = new Thread[100];
for (int i = 0; i < thread.length; i++) {
thread[i] = new ThreadJoin();
}
for (int i = 0; i < thread.length; i++) {
thread[i].start();
}
for (int i = 0; i < thread.length; i++) {
thread[i].join(); //不使用这句话n是个随机数,使用n=1000
}
System.out.println("n=" + ThreadJoin.n);
}
}
分享到:
相关推荐
了解Thread类的基本概念和方法对于理解和使用Java多线程至关重要,这不仅有助于编写高效的并发程序,也有助于解决可能出现的并发问题。同时,熟悉这些基础知识也能更好地运用线程池和多线程框架,如ExecutorService...
- 解决这些问题的方法包括找笔友(find a pen pal)、记笔记学习新词(write new words in notebook)、参加英语俱乐部(join an English language club)、每日写英语日记(write English diary)、多听...
这份“MySQL参考手册”是理解数据库操作、优化和管理的重要资源,尤其对初学者来说,它能解答许多在学习过程中遇到的疑惑。 首先,MySQL的关键字是数据库语言SQL中的重要组成部分,它们用于执行各种数据库操作,如...
在《数据库系统教程第三版》中,由施伯乐等主编的这部教材深入浅出地介绍了数据库的基本理论、设计方法和应用实践。课后题是学习过程中巩固知识、提升理解的关键环节,这份"课后题答案"文档将为我们解答学习过程中的...
这个任务要求学生利用已学的数据库知识,对销售数据进行统计分析,可能涉及到SQL查询的综合应用,包括SELECT、JOIN、GROUP BY、HAVING等子句的组合使用。 【教学过程】 1. **布置任务**:教师根据任务工单和口头...
在解决疑惑方面,会议可能涉及了如何处理多语言标签、如何定义和控制标签的规范性,以及如何处理动态变化的商品特性等问题。多语言标签需要考虑国际化的需求,可能需要额外的翻译表来支持;标签的规范性可以通过建立...
5. **问答和论坛讨论**:可能包含了关于LinQ的常见问题解答和社区讨论,有助于解决学习过程中的疑惑。 通过深入学习这些资料,你将能够熟练掌握LinQ,提升你的.NET开发技能,无论是处理对象数据、数据库数据还是XML...
此外,解决SQL疑惑的部分可能包含了解答在实际操作中遇到的问题,比如性能优化、索引的使用、事务处理等。 对于程序员来说,掌握SQL金典是至关重要的,因为这将帮助他们写出更有效、更高效的查询。这些文档可能会...
"ORACLE常用傻瓜问题1000问全集"显然是一部针对Oracle初学者和中级用户的问题集,旨在帮助他们解决日常遇到的各种疑惑。下面我们将深入探讨其中可能涉及的一些关键知识点。 1. **Oracle基础知识**: - 数据库概念...
在实践中,优化SQL查询性能是另一个关键点,包括避免全表扫描、合理设计数据库结构和索引、使用EXPLAIN分析查询执行计划等方法。同时,了解如何使用SQL标准(如SQL92、SQL99等)以及MySQL特有的语法和功能,将有助于...
本SQL帮助文件是为了解决你在编程过程中遇到的疑惑和问题,提供快速查找和学习SQL语法及用法的便利途径。 首先,SQL的核心功能包括数据查询、数据插入、更新和删除,以及数据库结构的创建和修改。在数据查询方面,`...
随着对T-SQL的理解加深,读者将学习如何处理和操纵数据,包括插入、更新、删除记录,以及使用JOIN和子查询进行复杂的数据检索。最后,本书将介绍报告服务,教授如何在SQL Server 2008上创建和呈现数据报表,满足业务...
尽管如此,线程之间共享进程的内存空间,包括全局变量和堆内存,这使得线程间通信更为便捷,但也引入了数据一致性的问题,需要通过同步机制(如互斥量、条件变量等)来解决。 2. pthread创建与终止 pthread库提供了...
4. **数组方法**:push、pop、shift、unshift、slice、splice、concat、join、map、filter、reduce等。 5. **ES6及之后的新特性**:模板字符串、解构赋值、let和const、箭头函数、类和模块、async/await等。 6. **...
疑惑:用故事或魔法等吸引人的注意力。 17. **on purpose** - 故意:表示行为是有意为之。 18. **dusk** - 黄昏傍晚:日落前后的一段时间,天色渐暗。 19. **thunder** - 打雷雷鸣:气象现象,常伴随闪电。 20. **...
多线程间需要通过同步机制来解决资源共享和同步问题,如互斥锁、条件变量等。 **1.7 线程的数据库、数据相关处理** 在多线程环境下访问数据库或其他数据资源时,需要采取措施防止并发冲突。 #### 线程的基本管理...
等待线程结束是为了确保主线程在子线程完成工作后再继续执行,可以通过`join()`等函数实现。 ##### 让进程先处理另一个线程 有时需要调整线程的执行顺序,例如让进程优先执行某个线程,可以通过调度策略来实现。 #...
滑稽好笑的):异常或与众不同,可能引发好奇或疑惑。 22. exercise(锻炼;练习):提高身体或技能的活动。 23. on the weekend(在周末):周末进行的活动。 24. best(最好的(地)):形容词最高级,表示最好或...