利用多线程机制编写程序,输出一个问候语,要求每隔1秒钟输出一个字符。用2种方法分别创建线程。 例如:问候语=“welcome!”,运行结果可能有多种情况,如下表所示,分别说明原因及创建线程的方法。
时间: 2024-03-06 22:49:08 浏览: 133
编写多线程程序
好的,我会根据你的要求回答你的问题。
这道题目可以使用两种方法来创建线程,分别是继承Thread类和实现Runnable接口。两种方法的区别在于,继承Thread类需要重写run()方法来定义线程执行的任务,而实现Runnable接口需要实现run()方法。另外,实现Runnable接口可以避免Java中的单继承问题。
下面是使用继承Thread类的代码示例:
```java
public class GreetingThread extends Thread {
private String greeting;
public GreetingThread(String greeting) {
this.greeting = greeting;
}
public void run() {
try {
for (int i = 0; i < greeting.length(); i++) {
System.out.print(greeting.charAt(i));
Thread.sleep(1000);
}
} catch (InterruptedException e) {
e.printStackTrace();
}
}
}
public class Main {
public static void main(String[] args) {
GreetingThread greetingThread = new GreetingThread("welcome!");
greetingThread.start();
}
}
```
上面的代码中,我们定义了一个GreetingThread类,它继承自Thread类,并且重写了run()方法。在run()方法中,我们通过for循环遍历问候语的每个字符,并且使用Thread.sleep()方法来让线程休眠1秒钟,然后再输出下一个字符。在main()函数中,我们创建了一个GreetingThread对象,并且调用start()方法来启动线程。
下面是使用实现Runnable接口的代码示例:
```java
public class GreetingRunnable implements Runnable {
private String greeting;
public GreetingRunnable(String greeting) {
this.greeting = greeting;
}
public void run() {
try {
for (int i = 0; i < greeting.length(); i++) {
System.out.print(greeting.charAt(i));
Thread.sleep(1000);
}
} catch (InterruptedException e) {
e.printStackTrace();
}
}
}
public class Main {
public static void main(String[] args) {
GreetingRunnable greetingRunnable = new GreetingRunnable("welcome!");
Thread greetingThread = new Thread(greetingRunnable);
greetingThread.start();
}
}
```
上面的代码中,我们定义了一个GreetingRunnable类,它实现了Runnable接口,并且实现了run()方法。在run()方法中,我们通过for循环遍历问候语的每个字符,并且使用Thread.sleep()方法来让线程休眠1秒钟,然后再输出下一个字符。在main()函数中,我们创建了一个GreetingRunnable对象,并且将其作为参数传递给Thread类的构造函数来创建线程,然后调用start()方法来启动线程。
以上两种方法都可以满足题目要求,输出结果可能有多种情况,因为多线程的执行顺序是不确定的。
阅读全文