龜兔比賽 多執行緒
/***
- 龜兔比賽
*編寫龜兔賽跑多執行緒程式,設定賽跑長度為30米 - 兔子的速度是10米每秒 兔子跑完10米後休眠的時間為10秒
- 烏龜的速度是1米每秒 烏龜跑完10米的休眠時間是1秒
- 要求兔子和烏龜的執行緒西結束 主執行緒才能公佈最後的結果
*/
public class TestWuGuiTrace {
public static void main(String[] args) {
WuGui w = new WuGui() ;
w.start();
Rabbit rabbit = new Rabbit() ;
rabbit.start();
try {
rabbit.join();
w.join();
} catch (InterruptedException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
long wT = w.getTime();
long rT = rabbit.getTime() ;
if(wT>rT) {
System.out.println("兔子贏 ");
}else if(wT==rT) {
System.out.println("平手 ");
}else {
System.out.println("烏龜贏 ");
}
}
}
class WuGui extends Thread{
private long time ;
public long getTime() {
return time;
}
public void run () {
long start = System.currentTimeMillis() ;
System.out.println("烏龜run ......");
for(int i = 0;i<=30 ;i++) {
try {
System.out.println("烏龜跑了"+i+"米");
Thread.sleep(1000);
} catch (InterruptedException e) {
e.printStackTrace();
}
if(i==10 || i==20 ) {
try {
System.out.println("烏龜已經跑了"+i+"米");
Thread.sleep(1000);
} catch (InterruptedException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
long end = System.currentTimeMillis() ;
time = end-start ;
System.out.println("烏龜到達終點 ");
}
}
class Rabbit extends Thread{
private long time ;
public long getTime() {
return time;
}
public void run () {
long start = System.currentTimeMillis() ;
System.out.println("兔子run 。。。");
for(int i = 0 ;i<=30;i++ ) {
System.out.println("兔子跑了"+i+"米");
try {
Thread.sleep(100);
} catch (InterruptedException e) {
e.printStackTrace();
}
if(i==10 || i== 20 ) {
try {
System.out.println("兔子已經跑了"+i+"米");
Thread.sleep(10000);
} catch (InterruptedException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
long end = System.currentTimeMillis() ;
time = end-start ;
System.out.println("兔子已經到達終點");
}
}
使用物件導向編寫龜兔賽跑
public class TestSport {
public static void main(String[] args) {
Sport s1 = new Sport("烏龜",1000,1000);
Sport s2 = new Sport("兔子",100,10000);
s1.start();
s2.start();
//主執行緒被加塞
try {
s1.join();
s2.join();
} catch (InterruptedException e) {
e.printStackTrace();
}
long wT = s1.getTime();
long tT = s2.getTime();
if(wT < tT){
System.out.println("烏龜贏");
}else if(wT > tT){
System.out.println("兔子贏");
}else{
System.out.println("平手,再來一次");
}
}
}
class Sport extends Thread{
private long speedPerMeter ;
private long restTime ;
private long time;
public Sport(String name ,long speedPerMeter, long restTime) {
super(name);
this.speedPerMeter = speedPerMeter;
this.restTime = restTime;
}
public void run(){
long start = System.currentTimeMillis();
for (int i = 1; i <= 30; i++) {
System.out.println(getName() + "run....");
try {
Thread.sleep(speedPerMeter);//一秒,模擬跑一米耗時1秒
} catch (InterruptedException e) {
e.printStackTrace();
}
if(i==10 || i==20){
System.out.println(getName()+"跑了" + i + "米");
System.out.println(getName()+"sleep...");
try {
Thread.sleep(restTime);//1秒,模擬休息1秒
} catch (InterruptedException e) {
e.printStackTrace();
}
}
}
long end = System.currentTimeMillis();
time = end - start;
System.out.println(getName()+"到達終點");
}
public long getTime() {
return time;
}
}
相關文章
- [譯]Kotlin中的龜(List)兔(Sequence)賽跑Kotlin
- 7-39 龜兔賽跑(C語言數學法)C語言
- Muduo 多執行緒模型對比執行緒模型
- win32多執行緒和C++11多執行緒對比Win32執行緒C++
- 多執行緒和多執行緒同步執行緒
- 多執行緒-多執行緒兩種方式的圖解比較及區別執行緒圖解
- 多執行緒【執行緒池】執行緒
- 多執行緒--執行緒管理執行緒
- Java多執行緒——執行緒Java執行緒
- 執行緒與多執行緒執行緒
- VC多執行緒 C++ 多執行緒執行緒C++
- 多執行緒-執行緒控制之休眠執行緒執行緒
- 多執行緒-執行緒控制之加入執行緒執行緒
- 多執行緒-執行緒控制之禮讓執行緒執行緒
- 多執行緒-執行緒控制之中斷執行緒執行緒
- 多執行緒之初識執行緒執行緒
- Java多執行緒-執行緒中止Java執行緒
- Java多執行緒——執行緒池Java執行緒
- 多執行緒-執行緒概述等執行緒
- 多執行緒系列(1),多執行緒基礎執行緒
- 多執行緒系列(二):多執行緒基礎執行緒
- 多執行緒------執行緒與程式/執行緒排程/建立執行緒執行緒
- 多執行緒-執行緒控制之守護執行緒執行緒
- a、多執行緒執行緒
- java 多執行緒守護執行緒Java執行緒
- Java多執行緒-執行緒通訊Java執行緒
- Java多執行緒-執行緒狀態Java執行緒
- Java多執行緒(2)執行緒鎖Java執行緒
- java多執行緒9:執行緒池Java執行緒
- Java多執行緒之執行緒中止Java執行緒
- 多執行緒系列之 執行緒安全執行緒
- iOS 多執行緒之執行緒安全iOS執行緒
- 【java多執行緒】(二)執行緒停止Java執行緒
- kuangshenshuo-多執行緒-執行緒池執行緒
- iOS多執行緒之執行緒安全iOS執行緒
- Java多執行緒——守護執行緒Java執行緒
- JavaThread多執行緒執行緒池Javathread執行緒
- Java多執行緒16:執行緒組Java執行緒