package run;
public class Race {
public static void main(String[] args) {
Race race = new Race();
//tortoiseRice tortoise =new Race().new tortoiseRice();
tortoiseRice tortoise = race.new tortoiseRice();
robbitRice robbit = race.new robbitRice();
Thread t = new Thread(tortoise);
Thread r = new Thread(robbit);
t.start();
r.start();
while(ready <2){
try {
Thread.sleep(1);
} catch (InterruptedException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
synchronized (Race.lock) {
lock.notifyAll();
}
}
int Distance = 10000;
static int ready;
private static Object lock = new Object();
//tortoise
class tortoiseRice implements Runnable{
@Override
public void run() {
synchronized (lock) {
ready++;
try {
Race.lock.wait();
} catch (InterruptedException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
int tortoiseDistance = 0;
for(int i=0;tortoiseDistance<Distance;i++){
tortoiseDistance++;
System.out.println("乌龟跑了"+tortoiseDistance+"米");
try {
Thread.sleep(1);
} catch (InterruptedException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
System.out.println("乌龟跑完了比赛!");
}
}
//robbit
class robbitRice implements Runnable{
@Override
public void run() {
synchronized (lock) {
ready++;
try {
Race.lock.wait();
} catch (InterruptedException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
int robbitDistance = 0;
for(int i=0;robbitDistance<=Distance;i++){
robbitDistance += 5;
System.out.println("兔子跑了"+robbitDistance+"米");
try {
Thread.sleep(10);
} catch (InterruptedException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
System.out.println("兔子跑完了比赛!");
}
}
}
分享到:
相关推荐
先由一个简单的例子引出多线程 先作出这个简单的界面 “开始”对应的槽函数是:slotStart() “停止”对应的槽函数是:slotStop() 本例中的线程(workthread类)实现的功能是,从0到9循环打印,0至9各占一排。 ...
很简单的一个java多线程例子,希望多大家有帮助
本篇文章将详细讲解一个在Delphi中实现的最简单的多线程例子,帮助你理解如何在实践中应用多线程。 首先,让我们分析一下提供的文件列表: 1. `ThSort.dcu` 和 `SortThds.dcu`:这些是编译后的单元文件,包含了源...
本篇文章将详细解析标题为“Qt多线程的一个简单例子”的示例项目,通过分析描述中的“用QT实现的一个简单多线程例子”,我们将深入理解Qt如何使用QThread进行多线程操作。 首先,我们需要了解Qt中的QThread类。...
在这个“易语言多线程简单实用例子分享”中,我们将探讨如何在易语言中利用多线程技术来提高程序的运行效率和用户体验。 多线程是现代软件开发中的一个重要概念,它允许程序同时执行多个任务,而不是顺序地执行。在...
本文将详细解释标题为"一个最简单的多线程例子"的VC多线程示例,以及如何利用这些概念来提升应用程序的性能。 首先,我们需要理解什么是线程。线程是操作系统分配CPU时间的基本单位,一个进程可以包含一个或多个...
总的来说,多线程编程是一个复杂但强大的工具,可以极大地提升软件的性能和用户体验。通过深入理解上述概念并实践这些示例项目,开发者能够更好地掌握如何在实际应用中有效且安全地使用多线程。
本知识点将深入探讨Qt5中的多线程以及一个简单的实例——WorkThread。 **1. 多线程概念** 多线程是指在一个进程中同时执行多个独立的代码段,每个代码段称为线程。这种并行处理可以提高程序的执行效率,尤其是在...
本文将深入探讨“简单多线程实例”,旨在帮助你理解并掌握如何在实际项目中运用多线程。 多线程是指在一个程序内同时运行多个线程,每个线程都独立地执行自己的任务。在Java、Python、C++等编程语言中,都有内置的...
winform多线程经典实例超级简单易懂。和传统的委托不同。使用了SynchronizationContext技术。具体SynchronizationContext技术优势可以百度。 几行代码就可以实现多线程委托。超级简单。
2. **共享资源**:在多线程环境中,多个线程可能需要访问同一个数据或对象,这就形成了共享资源。 3. **竞态条件**:当两个或多个线程同时访问并修改共享资源时,如果没有适当的同步措施,可能导致数据的不一致性,...
在“使用多媒体定时器做多线程编程的简单例子”中,我们可以假设以下场景:一个应用程序需要周期性地执行多个独立的任务,每个任务都由一个单独的线程来完成。多媒体定时器可以用来设置一个精确的时间间隔,当到达这...
根据提供的文件信息,我们可以归纳出以下关于Java多线程的经典示例中的关键知识点: ### Java多线程实现方式 在Java中,实现多线程有两种主要的方法:通过继承`Thread`类或者实现`Runnable`接口。 #### 继承...
这个"易语言大漠多线程例子.rar"压缩包包含了一个使用大漠插件实现多线程编程的示例项目。 多线程是现代程序设计中一个关键的概念,它允许程序同时执行多个任务,提高了程序的效率和响应性。在易语言中,使用大漠...
在C#编程中,多线程是一个核心概念,它允许程序同时执行多个任务,从而提高应用程序的效率和响应性。本教程将引导初学者理解并掌握C#中的多线程技术。 多线程在现代软件开发中至关重要,尤其是在处理耗时操作如网络...
标题“多线程C++Winsock多客户端连接的简单例子”暗示了我们要讨论的核心概念:在C++环境中,通过Winsock库实现一个多线程服务器,它可以同时处理多个客户端的连接请求。多线程允许程序在单个进程中运行多个执行线程...
1. 创建epoll实例:使用`epoll_create()`函数创建一个epoll实例,返回一个epoll文件描述符。 2. 注册文件描述符:使用`epoll_ctl()`函数将需要监听的文件描述符(如套接字)添加到epoll实例中,设置感兴趣的事件...
在IT行业中,多线程是程序设计中的一个重要概念,特别是在C#编程中。"大漠多线程模板"是一个专门针对C#开发的多线程处理框架,它为开发者提供了便捷的方式来管理和优化多线程应用。这个框架由知名开发者"大漠"创建,...
在这个“tc调用lw及多线程简单例子”的场景中,我们可以深入探讨以下几个相关知识点: 1. **Tcl语言**:Tcl是一种动态类型的解释型脚本语言,它简洁且易于学习。它的主要用途是自动化任务、系统管理、GUI开发等。...
《易语言lw简单多线程例子》是一个关于易语言编程的示例项目,它展示了如何在易语言中实现多线程功能。易语言是中国自主研发的一种简单易学的编程语言,旨在降低编程难度,让更多人能够参与到编程中来。在这个例子中...