/**
*
* 模拟烧茶的过程:
* 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()+"买茶杯回来啦");
}
}
分享到:
相关推荐
在编程领域,尤其是在开发高效、响应迅速的应用程序时,多线程技术扮演着至关重要的角色。Qt5框架提供了一种方便的方式来实现多线程,它允许开发者在不同的线程中执行任务,从而避免主线程(GUI线程)因处理耗时操作...
3. 服务线程:模拟银行窗口的服务过程,处理每个被叫到的用户。 4. 用户等待线程:用于模拟用户等待叫号的状态,可能包含实时更新等待队列等功能。 二、VC中的多线程编程 在VC环境中,多线程的创建和管理主要依赖...
Linux多线程服务端编程:使用muduo+C网络库.pdf Linux多线程服务端编程:使用muduo+C网络库.pdfLinux多线程服务端编程:使用muduo+C网络库.pdfLinux多线程服务端编程:使用muduo+C网络库.pdfLinux多线程服务端编程:...
在这个"Linux下多线程模拟实验"中,我们将深入探讨如何使用C语言在Linux环境下实现生产者-消费者问题,这是一个经典的线程同步问题。 生产者-消费者问题是多线程编程中的一个经典案例,主要用于演示如何通过共享...
嵌入式实时操作系统的多线程计算:基于ThreadX和ARM.pdf
在本场景中,"多线程客户端请求模拟"是指客户端程序利用多线程技术来并发地向服务器发送请求,以测试或模拟实际网络环境中的高并发情况。这种方式可以更真实地反映出服务器在大量并发请求下的性能表现,帮助开发者...
在本文中,我们将深入探讨如何使用多线程技术来模拟火车站售票系统,主要涉及C++编程语言中的线程同步和Windows编程。多线程技术在处理并发任务时能显著提高程序效率,尤其在大型系统中,如火车站售票系统,它需要...
1. **多线程**:多线程是操作系统并发执行的机制,允许多个任务在同一时间片段内交替执行。在电梯仿真程序中,可能有多个线程,如电梯线程、请求服务的乘客线程以及楼层状态更新线程。每个线程代表电梯系统的一个...
在本项目中,我们关注的是多线程同步模拟,这是操作系统设计中的一个关键概念,尤其是在C++环境下,利用MFC(Microsoft Foundation Classes)库进行用户界面操作。 **多线程** 是指在一个进程中同时执行多个线程,...
"多线程设计一个火车售票模拟程序" 在本实验中,我们将使用 Java 语言来设计一个火车售票模拟程序。这个程序模拟了火车站中的售票情况,具有5个售票点,每个售票点都可以售出火车票。我们将使用多线程技术来实现这...
本文将详细介绍JavaScript模拟多线程的概念以及如何使用JavaScript实现类似多线程的效果。 一、JavaScript的单线程模型 JavaScript引擎在设计时遵循了单线程执行的模型,这意味着任何时刻只能执行一个任务。这种...
在Linux操作系统中,多线程模拟进程调度是一个深入理解操作系统内核和并发编程的重要主题。进程调度是操作系统核心的关键组成部分,负责决定哪个进程应该获得CPU的执行权,以及何时进行切换。而通过多线程模拟进程...
标题提到的“vb模拟多线程 本地Timer对多线程”就是一种常见的解决策略,通过使用Windows API中的定时器(Timer)来模拟多线程的效果。 首先,我们来看一下什么是多线程。多线程是指在一个进程中同时执行多个不同的...
在本实验中,我们探讨了如何使用C语言和Windows API实现多线程来模拟汽车司机与售票员的同步操作。这个实验旨在展示并发执行的线程如何通过同步机制协同工作,确保程序的正确运行。 首先,多线程是操作系统中的一种...
在这个"多线程赛马游戏"中,我们利用了Java或其他支持多线程编程的语言,创建了四个线程来模拟四匹马的竞赛过程。这种设计方式使每匹马的运行独立于其他马,从而实现并行竞赛。 首先,我们需要了解线程的基本概念。...
在这个“C++11实现多线程电梯运行”的项目中,开发者利用C++11的线程库来模拟电梯的运行状态和行为,以提高模拟的真实感和效率。 首先,我们需要理解C++11中的`std::thread`库。这个库提供了一种创建新线程的方法,...
### 基于LabVIEW测试系统的多线程编程模拟 #### 引言 在现代测试系统开发中,提高系统的实时性和效率是至关重要的。传统的单线程编程模型往往难以满足这些需求,尤其是在处理复杂的测试任务时。为了克服这一挑战,...
在这个特定的项目“java多线程模拟时钟显示”中,开发者利用Java的多线程技术来创建一个模拟传统时钟的程序,时钟会实时地显示时针、分针和秒针的位置。下面我们将深入探讨如何实现这样的功能以及涉及的关键知识点。...
在这个程序中,每个参赛者(线程)都有自己的运行逻辑,通过线程的并发执行来模拟实际的赛跑过程。接下来,我们将深入探讨Java多线程控制的相关知识点。 1. **线程的创建**: - Java提供了两种创建线程的方式:...
《Delphi多线程生命模拟程序详解》 生命模拟程序是一种计算机模拟实验,它尝试通过简单的规则来模拟生物系统的复杂行为。在编程领域,利用 Delphi 这样的高级编程语言来实现多线程的生命模拟程序,可以极大地提高...