运行效果图:
aaarticlea/png;base64,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" alt="" />
代码:
package com.niit.syntronized;
/**
* @author: Annie
* @date:2016年6月15日
* @description:线程联合(顾客到蛋糕店买蛋糕)使用join()方法
*/
public class ThreadJoin implements Runnable{
Thread joinThread;
Cake cake;
public void setThread(Thread t){
joinThread =t;
}
@Override
public void run() {
if(Thread.currentThread().getName().equals("顾客")){
System.out.println(Thread.currentThread().getName()+"正在等待"+joinThread.getName()+"制作生日蛋糕");
try {
joinThread.start();
joinThread.join();
} catch (InterruptedException e) {}
System.out.println(Thread.currentThread().getName()+"买了生日蛋糕:价钱" + cake.price);
}else if (Thread.currentThread()==joinThread){
System.out.println(Thread.currentThread().getName()+"开始制作蛋糕,请耐心等待.........");
try {
Thread.sleep(2000);
} catch (InterruptedException e) {
e.printStackTrace();
}
cake = new Cake("生日蛋糕",158);
System.out.println(joinThread.getName()+"制作完毕");
}
}
class Cake {
int price;
String name;
public Cake(String name,int price) {
this.price = price;
this.name = name;
}
}
public static void main(String[] args) {
ThreadJoin threadJoin = new ThreadJoin();
Thread customer = new Thread(threadJoin);
customer.setName("顾客");
Thread cakeMake = new Thread(threadJoin);
cakeMake.setName("蛋糕");
threadJoin.setThread(cakeMake);
customer.start();
}
}
- java线程基础巩固---分析Thread的join方法详细介绍,结合一个典型案例
关于Thread中的join方法貌似在实际多线程编程当中没怎么用过,在当初学j2se的时候倒时去学习过它的用法,不过现在早已经忘得差不多啦,所以对它再复习复习下. 首先先观察下JDK对它的介绍: 其实 ...
- 线程状态以及sleep yield wait join方法
前言 在日常的开发过程中,我们通过会使用Thread.sleep模拟一个耗时的任务执行过程. 在深入理解这四个方法之前,首先对线程的状态进行理解阐述. 线程概念 线程是操作系统执行任务的基本单位,处理 ...
- 线程中的join方法
join方法的作用是同步线程. 1.不使用join方法:当设置多个线程时,在一般情况下(无守护线程,setDeamon=False),多个线程同时启动,主线程执行完,会等待其他子线程执行完,程序才会退 ...
- Java并发编程之线程生命周期、守护线程、优先级、关闭和join、sleep、yield、interrupt
Java并发编程中,其中一个难点是对线程生命周期的理解,和多种线程控制方法.线程沟通方法的灵活运用.这些方法和概念之间彼此联系紧密,共同构成了Java并发编程基石之一. Java线程的生命周期 Jav ...
- 多线程入门-第六章-线程的调度与控制之join
/* 线程合并:将指定的线程加入到当前线程,可以将两个交替执行的线程合并为顺序执行的线程,即单线程. 如在B线程中调用了A的join方法,则线程A执行完后,才会执行线程B. */ public cla ...
- java基础知识回顾之java Thread类学习(十)--线程的状态以及转化使用的方法介绍
线程的概述: 线程是程序的多个执行路径,执行调度的单位,依托于进程存在.线程不仅可以共享进程的内存,而且还拥有一个属于自己的内存空间,这段内存空间叫做线程栈,是建立线程的时候由系 ...
- 多线程之join方法
join方法的功能就是使异步执行的线程变成同步执行.也就是说,当调用线程实例的start方法后,这个方法会立即返回,如果在调用start方法后后需要使用一个由这个线程计算得到的值,就必须使用join方 ...
- 模拟做饭系统(java+线程中的join方法)
(一)项目框架分析 妈妈要去做饭,发现没有酱油,让儿子去买酱油,然后回来做饭. 根据面向对象的思想,有两个对象,妈妈和儿子 主要有两个方法: (一)没有线程控制(即儿子没有买酱油回来妈妈就做好饭了)+ ...
- 线程join方法详解
执行逻辑:在当前代码块(比如main方法)中的线程A执行了join方法, 那么当代码块(main)执行到join方法时,会停止继续向下执行,一直到线程A执行完毕, main方法才会继续向下执行. 代码 ...
随机推荐
- multiset与set
set的含义是集合,它是一个有序的容器,里面的元素都是排序好的,支持插入,删除,查找等操作,就 像一个集合一样.所有的操作的都是严格在logn时间之内完成,效率非常高. set和multiset的 ...
- 初学Python之 字符串 索引 分片
字符串是字符的有序集合,可以通过其位置来获得具体的元素. 在python中,字符串中的字符是通过索引来提取的,索引从0开始. python可以取负值,表示从末尾提取,最后一个为-1,倒数第二个为-2, ...
- 【head first python】1.初识python 人人都爱列表
#coding:utf-8 #创建简单的python列表 movies = ["The Holy Grail", "The Life of Brain", &q ...
- logstash结合zabbix报警安装部署
cd /usr/share/logstash/ vim Gemfile source "https://ruby.taobao.org/" ##修改成国内镜像站 source &q ...
- js 科学计数法 转换为 数字字符 突破幂数正数21位,负数7位的自动转换限制
前天工作中要转换后台返回的一个数据,返回是的科学计算的数字字符,用网上能搜索到的常用两种方法转换会有倍数的限制,然后又搜索了很久,还是没有找到好的方法,虽然也有一些自己写的方法,可还是不能像下面两种方 ...
- .Net高级进阶,WebApi和MVC进行模型验证的时候,教你如何自由控制需要进行验证的字段?
现在,你有一个MVC架构的web项目,你要完成一个注册功能. 前台传了3个值到你的控制器,分别是账号.密码.邮箱. 如图:现在你要在控制器里面判断,账号名称.密码.邮箱不能为空,并且名称和密码不超过1 ...
- Linux常见命令(四)——mkdir
今天我们来介绍第四个命令:mkdir.mkdir (Make Directory 创建目录): 若指定目录不存在则创建目录.在创建目录时,要求创建目录的用户具有写权限,并应保证新建的目录没有重名. 用 ...
- wmic 获得系统硬件信息
wmic扩展了wmi系统管理指令,提供了命令行接口和批处理执行系统管理的工具.通过别名机制将命令转为对wmi命名空间的操作 1.获得cpu信息 2.获得cpu 核数 3.获得内存条信息
- form enctype参数
application/x-www-form-urlencoded 表示在发送前编码所有字符(默认) multipart/form-data 不对字符编码.在使用包含文件上传控件的表单时,必须使用该值 ...
- SpringMVC(一)--基础、REST、@RequestParam、POST请求乱码等
1.SpringMVC基本概述 Spring 为展现层提供的基于 MVC 设计理念的优秀的Web 框架,是目前最主流的 MVC 框架之一 Spring3.0 后全面超越 Struts2,成为最优秀的 ...