随便选择两个城市作为预选旅游目标,实现两个独立线程分别显示10次城市 名,每显示后休眠一段随机时间(1000ms以内),哪个先显示完毕,就决定去哪个 城市。分别用Runnable接口和Thread类实现。
时间: 2024-05-01 10:19:18 浏览: 99
以下是用Runnable接口实现的代码:
```java
import java.util.Random;
public class TravelRunnable implements Runnable {
private String city;
private Random random = new Random();
public TravelRunnable(String city) {
this.city = city;
}
@Override
public void run() {
for (int i = 1; i <= 10; i++) {
System.out.println(city);
try {
Thread.sleep(random.nextInt(1000));
} catch (InterruptedException e) {
e.printStackTrace();
}
}
}
public static void main(String[] args) {
TravelRunnable travel1 = new TravelRunnable("Beijing");
TravelRunnable travel2 = new TravelRunnable("Shanghai");
Thread thread1 = new Thread(travel1);
Thread thread2 = new Thread(travel2);
thread1.start();
thread2.start();
try {
thread1.join();
thread2.join();
} catch (InterruptedException e) {
e.printStackTrace();
}
System.out.println("We decided to travel to " + (travel1.random.nextInt(2) == 0 ? "Beijing" : "Shanghai"));
}
}
```
以下是用Thread类实现的代码:
```java
import java.util.Random;
public class TravelThread extends Thread {
private String city;
private Random random = new Random();
public TravelThread(String city) {
this.city = city;
}
@Override
public void run() {
for (int i = 1; i <= 10; i++) {
System.out.println(city);
try {
Thread.sleep(random.nextInt(1000));
} catch (InterruptedException e) {
e.printStackTrace();
}
}
}
public static void main(String[] args) {
TravelThread travel1 = new TravelThread("Beijing");
TravelThread travel2 = new TravelThread("Shanghai");
travel1.start();
travel2.start();
try {
travel1.join();
travel2.join();
} catch (InterruptedException e) {
e.printStackTrace();
}
System.out.println("We decided to travel to " + (travel1.random.nextInt(2) == 0 ? "Beijing" : "Shanghai"));
}
}
```
阅读全文
相关推荐



