运行效果图:
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方法才会继续向下执行. 代码 ...
随机推荐
- CSS2--字体样式
## CSS2 字体样式 ##### font-family 字体族 - 规定元素的字体系列 - 把多个字体作为一个"回退"系统保存.保证浏览器的支持 - ````Microsof ...
- 【技术干货】听阿里云CDN安防技术专家金九讲tengine+lua开发
一.介绍 二.安装 三.运行 四.开发 1.介绍 Tengine:轻量级.高性能.高并发.配置化.模块化.可扩展.可移植的Web和反向代理 服务器,Tengine是nginx超集,但做了很多优化,包含 ...
- 一次使用pywin32学到的知识
FindWindow这个函数检索处理顶级窗口的类名和窗口名称匹配指定的字符串.这个函数不搜索子窗口. FindWindowEx:FindWindowEx是在窗口列表中寻找与指定条件相符的第一个子窗口 ...
- python实战===生成随机数
用于生成一个指定范围内的随机符点数,两个参数其中一个是上限,一个是下限. import random print random.uniform(10, 20) print random.u ...
- Java入门——(5)Java API
关键词:String类.StringBuffer类.System类.Math类.Random类.Date类.Calendar类.DateFormat类 API (Application Pro ...
- 熟悉JS中的常用选择器及属性、方法的调用
选择器.属性及方法调用的配合使用: <style> #a{ width: 200px; height: 1 ...
- 设计模式,Let's Go! (上)
* { color: #3e3e3e } body { font-family: "Helvetica Neue", Helvetica, "Hiragino Sans ...
- CentOS下安装JDK7
下载地址:http://www.oracle.com/technetwork/java/javase/downloads/java-se-jdk-7-download-432154.html 1. 安 ...
- decimal扩展方法(转换为字符串,去掉末尾的0)
/// <summary> /// 转换为字符串,去掉末尾0 /// </summary> /// <param name="target">被 ...
- Java 垃圾回收机制(早期版本)
Java 垃圾回收机制在我们普通理解来看,应该视为一种低优先级的后台进程来实现的,其实早期版本的Java虚拟机并非以这种方式实现的. 先从一种很简单的垃圾回收方式开始. 引用计数 引用计数是一种简单但 ...