/**
*
* 模拟烧茶的过程:
* 1)烧水
* 2)需要茶叶的时候发现没茶叶,叫eric去买(没有茶叶,需要买)
* 3)需要杯子的时候发现没杯子,叫meten去买(没有杯子,需要买)
* 4)放茶叶
* 5)倒水
* @author 够潮
*
*/
public class Demo12 {
/**
* @param args
*/
public static void main(String[] args) {
BurnTea bt = new BurnTea("够潮");
bt.start();
}
}
/**
* 管理线程
* @author 够潮
*
*/
class BurnTea extends Thread{
public BurnTea(String name){
super(name);
}
@Override
public void run() {
System.out.println(this.getName() +"烧水");
System.out.println(this.getName()+"发现没有茶叶了,叫eric去买");
TeaThread teaThread = new TeaThread("eric");
try {
teaThread.start();
teaThread.join();//买茶叶
} catch (InterruptedException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
System.out.println(this.getName()+"发现没有茶杯了,meten去买");
TeaCupThread teaCupThread = new TeaCupThread("meten");
try {
teaCupThread.start();
teaCupThread.join();//买茶杯
} catch (InterruptedException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
System.out.println(this.getName()+"放茶叶");
System.out.println(this.getName()+"倒水");
System.out.println(this.getName()+"烧好茶了");
}
}
/**
* 买茶叶模拟线程
* @author 够潮
*
*/
class TeaThread extends Thread{
public TeaThread(String name ){
super(name);
}
@Override
public void run() {
System.out.println(this.getName() +"去买茶叶啦");
try {
Thread.sleep(1000);
} catch (InterruptedException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
System.out.println(this.getName()+"买茶叶回来啦");
}
}
/**
* 没茶杯模拟线程
* @author 够潮
*
*/
class TeaCupThread extends Thread{
public TeaCupThread(String name ){
super(name);
}
@Override
public void run() {
System.out.println(this.getName() +"去买茶杯啦");
try {
Thread.sleep(1000);
} catch (InterruptedException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
System.out.println(this.getName()+"买茶杯回来啦");
}
}
分享到:
相关推荐
通过PyQt5,爬虫,多线程实现“根据豆瓣评分和人数挑选豆瓣所有类书籍”:成品请看blog:
多线程:4窗口同时买票
Java线程:概念与原理 Java线程:创建与启动 Java线程:线程栈模型与线程的变量 Java线程:线程状态的转换 Java线程:线程的同步与锁 Java线程:线程的交互 Java线程:线程的调度-休眠 Java线程:线程的调度-...
Java线程:概念与原理 Java线程:创建与启动 Java线程:线程栈模型与线程的变量 Java线程:线程状态的转换 Java线程:线程的同步与锁 Java线程:线程的交互 Java线程:线程的调度-休眠 Java线程:线程的调度-优先级 ...
一个Qt5多线程的简单实例,工作线程类WorkThread继承自QThread类。
Java线程:概念与原理 2 一、操作系统中线程和进程的概念 2 二、Java中的线程 3 三、Java中关于线程的名词解释 3 四、线程的状态转换和生命周期 4 Java线程:创建与启动 7 Java线程:线程名称的设定及获取 10 Java...
4初学Java多线程:线程的生命周期.pdf
Java_多线程编程线程:大总结 讲解非常详实
JAVA多线程:舞动在代码的乐章中.md
linux下多线程是想操作系统的经典生产者和消费者模拟实验。用C语言编写,gcc能够编译。而且含有makefile文件的解释。
Qt5多线程,实现一个多线程的网络时间服务器,每当有客户请求,服务器将启动一个新线程为它返回当前时间,服务完毕后,这个线程自动退出。
Java 模拟线程并发 Java, 模拟线程并发,线程,并发 Java, 模拟线程并发,线程,并发 Java, 模拟线程并发,线程,并发 Java, 模拟线程并发,线程,并发
多线程:可见性、有序性、原子性.xmind
多线程模拟进程调度多线程模拟进程调度多线程模拟进程调度多线程模拟进程调度
java 多线程 哲学家思考问题 java 多线程 哲学家思考问题 ...java 多线程 哲学家思考问题java 多线程 哲学家思考问题java 多线程 哲学家思考问题java 多线程 哲学家思考问题 java 多线程 哲学家思考问题
多线程 销售 死锁的有效防止 输出于文档
实验目的:使用多线程并发程序设计模拟生产者消费者问题,了解P-V操作的实现方法,实现生产者和消费者的同步和互斥,了解各线程如何使用临界资源和临界区。 主要内容:约束条件:生产者进程负责生产产品放到缓冲区,...
说明:本人在给Java游戏开发特训班讲解多线程时,需要说明多线程同步的问题,其中讲解了使用“生产者-消费者”模型来解决同步问题。可是当时特训班的学生不是很明白,特别是不明白这个模型怎么使用。这可能是由于...