Java并发编程--多线程中的join方法详解
2015-07-29 15:43
501 查看
Java Thread中, join()方法主要是让调用该方法的thread在完成run方法里面的部分后, 再执行join()方法后面的代码
例如:定义一个People类,run方法是输出姓名年龄。
如果main方法中不使用join 如下
那么输出为:
可见两个线程是同时开始的。
如果main方法中使用join,如下:
输出
可见是执行完了第一个线程之后再执行的第二个线程。
例如:定义一个People类,run方法是输出姓名年龄。
class People implements Runnable{ public String name ; public int age; public People(String name , int age){ this.name =name; this.age = age; } @Override public void run() { System.out.println("开始输出"); System.out.println("姓名"+name); System.out.println("年龄"+age); try { Thread.sleep(1000); } catch (InterruptedException e) { e.printStackTrace(); } System.out.println("========结束========="); } }
如果main方法中不使用join 如下
public static void main(String[] args) throws InterruptedException { People p1 = new People("张三",10); People p2 = new People("李四",11); Thread t1 = new Thread(p1); Thread t2 = new Thread(p2); t1.start(); t2.start(); }
那么输出为:
开始输出 开始输出 姓名张三 年龄10 姓名李四 年龄11 ========结束========= ========结束=========
可见两个线程是同时开始的。
如果main方法中使用join,如下:
public static void main(String[] args) throws InterruptedException { People p1 = new People("张三",10); People p2 = new People("李四",11); Thread t1 = new Thread(p1); Thread t2 = new Thread(p2); t1.start(); t1.join(); t2.start(); t2.join(); }
输出
开始输出 姓名张三 年龄10 ========结束========= 开始输出 姓名李四 年龄11 ========结束=========
可见是执行完了第一个线程之后再执行的第二个线程。
相关文章推荐
- Java 简单实现Enigma英格玛密码
- Spring 管理hibernate事物,xml配置,注解 两种实现方式
- 异常:javax.el.PropertyNotFoundException: Property 'id' not found on
- java环境配置
- Java HashMap初探
- Java 格式化标签 fmt
- 整合spring2.5+hibernate3+struts2.0
- Java c标签的简单使用
- Spring3+mybatis+mysql整合详解(五)
- MyEclipse项目如何导入jar包
- Tiling(POJ--2506【用文件编写java程序】
- Spring MVC GET 从客户端数据到服务器端的乱码和服务器端数据到客户端的乱码
- Spring3+mybatis+mysql整合详解(四)
- Spring3+mybatis+mysql整合详解(三)
- Spring3+mybatis+mysql整合详解(一)
- eclipse 快捷键
- Spring3+mybatis+mysql整合实例
- 001-maven构建struts项目
- SpringMVC +Hibernate JPA+Spring-data-jpa
- 【转】eclipse下使用git上传(下载)代码至(从)github