完整java代码利用多线程机制编写程序,输出一个共享字符串,要求每隔500毫秒输出一个字符及当前线程的名字。通过实现runnabe接口创建线程printinfo。共享字符串:你高中就读的学校名称。创建两个进程t1.t2,让两个进程交替输出该共享字符串
时间: 2024-03-11 17:47:30 浏览: 119
以下是实现题目要求的Java代码:
```java
public class PrintInfo implements Runnable {
private static String schoolName = "你高中就读的学校名称";
private static int index = 0;
private String threadName;
public PrintInfo(String threadName) {
this.threadName = threadName;
}
@Override
public void run() {
while (index < schoolName.length()) {
synchronized (schoolName) {
if (schoolName.charAt(index) == ' ') {
System.out.println();
} else {
System.out.print(schoolName.charAt(index));
}
System.out.println(" " + threadName);
index++;
}
try {
Thread.sleep(500);
} catch (InterruptedException e) {
e.printStackTrace();
}
}
}
public static void main(String[] args) {
Thread t1 = new Thread(new PrintInfo("t1"));
Thread t2 = new Thread(new PrintInfo("t2"));
t1.start();
t2.start();
}
}
```
首先定义了一个共享字符串 schoolName 和一个静态变量 index,用于记录当前已输出的字符位置。
然后创建了一个实现 Runnable 接口的类 PrintInfo,重写了 run 方法,在其中使用 synchronized 关键字实现对共享字符串的加锁,保证多个线程间对字符串的访问是互斥的。
在循环中,每次输出一个字符及当前线程的名字,然后将 index 加一,表示已经输出了一个字符,然后调用 Thread.sleep 方法使线程休眠 500 毫秒,达到每隔 500 毫秒输出一个字符的效果。
最后在 main 方法中创建两个线程 t1 和 t2,并启动它们。由于 synchronized 关键字的作用,两个线程会交替输出共享字符串 schoolName 的内容。
阅读全文