运行效果图:
aaarticlea/png;base64,iVBORw0KGgoAAAANSUhEUgAAARMAAABXCAIAAACodTYhAAANy0lEQVR4Ae1dO3IdRxIENvYopAyFTgCdgFhnLbnyQJN05Mlcbx3SJA9CnoA8AUOGyLtgE8j3cvJV9fT0vM/GBFDPGGVnZWXVVHcLEMAQr+/v76/qUxOoCaycwD9W6kteE6gJPEygbk6dg5rAMRP45zFJjznX19enf6fXMQmhsPS2PeQYGixdmbFeQYkCTJeAuR6VWyC5DKTEDkY0rhdGonATqG2VEIDecTO9yMUJ7G5O2AnMfZHhBngB7lZIzAJn+lhW2TmfjKaVZIzC0Bn5ey4ElGWx53rKWhycc3qzMcrYQ+gkGDbT594rVy9mZALT15ywGVyGLWmSLKPdcp+QHpTNJUg4KJEgLJmIp3hi8iABFtuQpmMSrLgU6YksjaeTVCrkLYmcA01xMPRa7sNcjyqRgM9mCfcp3JnAdHMg0nzz6BH1QUtJa4Q82qnnPjCZyxIvoEIyVzoBlSIlCwACMUzBk6TnOoZeSwGZNAFlHTFCTBTAMrxs03mOzD4j7zXnVvziBA5uDtQ+biy1H9pUMMJ0l2axWEewaOtV2ACfTPSocBB4VugEIfoE3peyFfAosUKslQVgvJDjprhDMlcOzYoj79UpUaHOBOLNcak2A9tDPuwWSO2cJzZJF8wlukbVO2I1NidWJzxDtApVZEKxL6Gks/xlmK1COqvIjQ6e7m1krMQcAiOfE9+raV7kyAR6N8d3iF46RtpXHam5YlJCILGTzcQsCAxPDJ9wCFEuEcVH/sDgnWGIjEJhqXSVkLlC7tMnc/Wg17KpVA8eBVbzSgegRqGwdGXhIyYQb472Jnt5SDvXJD1XSpHcSyUGQH3OQjoT5eMax0Emfyb6UlkkQ6IKCUBPjZsoOg48XVjNDPookXpfyooknmIGzUu2OIF4czojZkib4dadLJcRB7Fsnfdz4A7iXUxB53xI7BpZkdRT5SRQukLjQCZIkY8Ai467BWXTRxVprqdyJVC6QgXGJxBvDjI5ax+rYwjCUjsxXnVRyRLsROKwFE+AlDmBd+hYibIKrya+CUbEI5qm+Qjp7+KYuV7a8YhzaRYnEG8ONkBTJnaGdnmTFsscJ0AnuXrHSp27xsngFpbIIpOfboioLy+EF6uc/b0u9CJP1XZ3c7QNAjw9eG0wwpyCNFz6HgtnMJ7r/sRyo8ncM8tGmDm3wKsrAQiyf8gKy6wPjMwF3EFiAUUzo1CBS0xg+gpzCffyrAk81QnUn5V+qjtb73XZCdTNuex8y/2pTqBuzlPd2Xqvy06gbs5l51vuT3UCdXOe6s7We112AnVzLjvfcn+qE9jdHPw2oP/R+0NGLIClYyn7IKSEpXKbfCC5DCQdQPY/uRD0mRTTAZ5IWWZWpXfECAXzsPRcDzl2TeG1E4i/CWU+5uu/iWuOGwLKRsS0dc/FRoPtor4pCBWDJ5Y5a+69sjIwnqiQl6BAIYHQpHiA0LCHGCVDh1CLob5DMKzl+AQO/vTN3JS1MdpjbRIBn4w2xUpsdjZXN5g3ZU5SrxIq6hpFAZqtUkArPuXjuU1MpfS5bic0Z5hNoBRJEJayEs8U8iAB1InEBVZN4ODmeCbnS0YHgmTYj7V7IGf6NN1ECnhvGWerrCEDpULnfS/ZAqiKgE+J3UovTeApQGLm5SYgsdsyynTH0hQ4egLTzeF8tUlhS1gApARHl5QJrGgigKX8RQrkigo1u5W5KoJpKl2QqwwybIb+fIIJ5dSwgFpqikO6d+IO4H2Ze/CocMfcCxVuTmB3czBNjZuT1XyZhqgYin0JzdHbEBJpK5K12IMqauldiSSgg9KlDCbikUWxBAT0oWf/KSs50FNZtKLMnxLMASbSTVgg8G6iTkbEnlh4cQK7m+OTBcbEnaELGYXCkhptFZZNnG1dhiwJxBOIZyFXismkZwHDyhkmklEoLN18rhPXsAe5MRSWQZ+jmWGKXgGCbOJMUAY9l3xTzyo8PoGD79Y8zWetEZPEU4ynAIt3jWNowjJkuSHcKMbT+VU45PrSu4Una60y74i9UEeGEF+zrwlRde586N81joPMHQqPT+DgN6GYLz/I38Pp/4ChiSMEzA+Uezh6uJk+3uIqpZoBUKK/i2MKoAQJzMbogKWs3Ed4EagQzfv6EY07qDcHEGjpYmKEMinm8+uH1F/f/xAj8FRDesHjwMHN8bk7prXvrh8LYXWAXBeLF0B0USOxQN+TMjXjYn8Xx0rxEu5ArOiqnlUIQA4jYK4Kffheasy7hbmWuRBCi518/et7TiTzVENz77vIt4942DxfEs89Wc/1YMJSjEy8S2ywm0DDpXiluyxjMuEZOvGlmuEJC8/gM7dkt8qVTIXmqkApTc4ikwUha1HQ8VHRAoMTmH62FhKwDYEZXDb3z3OzQLfCi4oUgIkL3HMOZ31m5nKP471bOuSK1OCpkIAXdYHzjmnVTHcZ8aAsJxaTJ9D+mpN1xdQEagI+gYP/zvFA4ZpATaAzgbo5neFUqCYwO4G6ObOjqUBNoDOBujmd4VSoJjA7gbo5s6OpQE2gM4G6OZ3hVKgmMDuB3c3BT/r7HxlARiyApeMczbmuybnSC8xpAq+lgBwK1ATOO4HGn5VGAZw8/oqNxZoHkb+n01NthVzxq0CuGBhvLzifpYHgWcuaQJjA9GelEZg7czymHtU5JuBTpzmQWCqk8k5SrxDFOUUC1wtT77bSF6gJnH0CBzfH3XUiQeook/TT6RhKLQXcM2PKsrhzbdQP3YJSy+yZqxdTEzh6AtPNCYdYR9CtQS6eSAiYIuAOIdSsIn3TIadQlnn5FKgJnH0Cu++jcPh08ubOq/MQ+xJtKZ0tBkNGSfpTYr1Y8BHfBOzBU8hQ7HwzvciawNETmC6MW/BwOyMcQmEJmZ9dLHF8pRGgTCfbeRVaC85isrZo6Z/tBA6+W/Mp4CBq6Ucc5OIZ1W1xE7mNgMVEtTTiVpqawNknMN0cWOs4+t3QISapp1qRQOkKjQOZsA1ZsRx9HIPxFAkI+JSJk4VrAmeZwMHN8bPomJX8IDpe7GNEPKIJhUJKuFdBXMuawHknMP3pGxxEfVBDGCDfIjL56c3lLI+OYDigelae7pw9i6kJrJrA7mtOPouZGfTVWRdA4lo36t0BJliu9RnsuWQ1gbUTaP9Lfa1L6WsCz20C03drz+3N631rAqdMoG7OKdOr3Oc7gbo5z3fv681PmUDdnFOmV7nPdwJ1c57v3tebnzKBujmnTK9yn+8Ejr85/89frRxdC4n9j3YeMmIBLB1LuQg8y3H2V4ksQ+jH+1/BX7/+7BV35EOAn4O/f4B/70Ar4h6FzzCB3c3Zb8PunzA+jsmJ7qN+nQxYGlr5MuOQ60uK8ctT/4AMy+wJAXzA4wmcBZdgVHRv/nAFfr/67W6/Pvjnzbvv02t8efNiF0TO7TeFvr+7evvy8NYdmNTitAlMX3Omvdj/ZTI8N+RZRdjFIl3TEUCWo8Fk/KWaViGdNyGQbANPjwJzqSdBzp1joEdLjBJnBzCB5FLk59e3V5/uv7z5aa5Ki//x97erq19+2t+jF//67ebq29+NvxCnlVzc2gm0/8Qn9x4bqUMAX8faY9ZDyKMglSsQBLlRKT2kQgKILlq5Q8DZB24k8ZSz4+AwuJQD/eksEibAtHKSzKsP968Gy0yyF2/+vHt7e3uNO/fh1dXn1y/ffr379GV/kSZdobNMYPqaQzs/OmCwqfyoGJbQ+EchBxBA6Uwf09Y1Xgj8YkXPdUwfNdP0AckSnpgxTOSTo2AUBaAnZcAeImYnELiyaRvJr29fwuLxc/DtGC7c/ae7j7cPkYcvWg83qD4XmkC8OV6GW+v7ih3BEk/JyGhJQIEnBkFYZpPMhBQtocwfj7INtR3EUJIhCEuEZLUIINYrqxyzFFIzwY09jJR78eYLTHafx2sy/Yjg4acHu//S4QU6uFehZC1Pm0Dv5sA57CU2DCSe2mkyoQcKArlq2bRtOkCZP1IiFHAQI0qGICw93UPA+RPEWeCMBggSWF25Zhm/+vDp7mr/9xD+eP/74/dnjz8xwJcfhD7e1t1ZnuJxinhzwlVxU22277STEGspLMCQGy7i7AZmMSsIZMLcsKRYoZB79qUXCjeWoZUVH38qsMv5/tfXq5ufX8rh1b/bP5mToMApE4g3R9uZTT2k80eZQgR6IiosTXaeY5TrPnPiDt/3wbtAwBL+Xo5pTqZTaDGkQgReVMyiiQSPX2Vu3v3B/5p5+fPN1de3/93/9ufH+/98PLhJSitwlglgw7hn4flI784T8TgTlOzTTQKGIDBhOScY4Vm9+fQqc1ZBsyiTQAAOGWfGZd/f3UBw8Nn/Dgffg02fPblv8jDvDj8jqM+lJrD71y3/vYsndgWluDcixYCnZtq8R+QCaTIZGJmwkJYZzAmazTC9WSv4+JJ47plbmmPkKQBlwGDYHnhiClw251/8Riaw+32OzpmAdhGMMJuWhktE9TLEQaCs4APec2XS5INSJQSa6SGr6eyJ58L5Td0ZPbMxNS/GZYW3PIHpB6lb7rJ6qwlsbQLxJwRb66/6qQlscwJ1c7a5L9XV1idQN2frO1T9bXMCdXO2uS/V1dYnUDdn6ztU/W1zAnVztrkv1dXWJ1A3Z+s7VP1tcwJ1c7a5L9XV1idQN2frO1T9bXMCdXO2uS/V1dYnUDdn6ztU/W1zAnVztrkv1dXWJ1A3Z+s7VP1tcwJ1c7a5L9XV1ifwP0BbfAWyLtnJAAAAAElFTkSuQmCC" 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方法才会继续向下执行. 代码 ...
随机推荐
- iOS tableview group时头尾视图间隔大小
解决: 一,当使用tableview的格式为group时 1.先设置 tableview.sectionHeaderHeight = 0.00001; tableview.sectionFooterH ...
- Python集合(set)类型的操作
python的set和其他语言类似, 是一个无序不重复元素集, 基本功能包括关系测试和消除重复元素. 集合对象还支持union(联合), intersection(交), difference(差)和 ...
- C#的初学知识点
初学C# 初见Hello,World 第一句源代码:Console.WriteLine("Hello,World");: 认识.Net: 编译工具:Visual Studio: 主 ...
- PHP基础与JS操作的区别
嵌入页面方式 JS嵌入方式:<script></script> PHP嵌入方式:<?php ?>(常用) 输出语法 Javascript输出 1.alert(&qu ...
- iOS的阴影绘制及性能优化
今天来讲讲iOS开发过程中的阴影绘制及其潜在的绘图性能问题.虽然在开发过程中,我们使用阴影功能的机会不是很多,但是如果用了,有可能引起如卡顿等性能问题,所以,还是有必要来探究一下阴影的绘制过程,及如何 ...
- [UWP]了解模板化控件(5.2):UserControl vs. TemplatedControl
1. UserControl vs. TemplatedControl 在UWP中自定义控件常常会遇到这个问题:使用UserControl还是TemplatedControl来自定义控件. 1.1 使 ...
- Redis笔记——技术点汇总
目录 · 特点 · 安装 · 数据库 · 服务器命令 · 数据类型及其操作命令 · 数据结构 · string · list · set · hash · zset · 发布与订阅 · 排序 · 事务 ...
- Oozie调用Spark实例
oozie调用spark有三样是必须有的: workflow.xml(不可改名) , job.properties(可改名) , jar包(自备). 1.workflow.xml workflow.x ...
- VS2015 安装nuget离线包nupkg文件
最近在做项目进度管理时,想通过安装net.sf.mpxj-for-csharp包读取.mpp格式文件,通过Nuget在线安装时,出现以下情况,无法安装,故开启离线安装道路. 离线安装步骤如下: 一.下 ...
- mysql 时间戳格式化函数FROM_UNIXTIME和UNIX_TIMESTAMP函数的使用说明
我们一般使用字段类型int(11)时间戳来保存时间,这样方便查询时提高效率.但这样有个缺点,显示的时间戳,很难知道真实日期时间. MySQL提供了一个时间戳格式化函数from_unixtime来转换格 ...