通过实现Runnable接口实现一个线程类T,线程对象向共享的StringBuffer对象buffer中写入字符串。主线程main中创建了两个线程对象名字为t1和t2。线程操作定义: 1、若线程名字为t1,向StringBuffer对象中写入一个字符串“ tongxin”(注意,tongxin前面有空格)。使用append(String t)方法。 2、若线程名字为t2,向StringBuffer对象中写入一个字符串“Hello”。 3、要求Hello写入到 tongxin前面,构成“Hello tongxin”的字符串。 在类T的run方法中,采用synchronized修饰代码块的方式,配合wait、notifyall方法实现同步,完成类T的设计。
时间: 2023-07-16 18:13:35 浏览: 77
下面是实现该线程类的代码:
```java
class T implements Runnable {
private StringBuffer buffer;
public T(StringBuffer buffer) {
this.buffer = buffer;
}
@Override
public void run() {
synchronized (buffer) {
try {
if (Thread.currentThread().getName().equals("t1")) {
buffer.append(" tongxin");
System.out.println("线程t1已执行,buffer内容为:" + buffer);
buffer.notifyAll();
} else if (Thread.currentThread().getName().equals("t2")) {
while (!buffer.toString().endsWith(" tongxin")) {
buffer.wait();
}
buffer.insert(0, "Hello ");
System.out.println("线程t2已执行,buffer内容为:" + buffer);
}
} catch (InterruptedException e) {
e.printStackTrace();
}
}
}
}
```
在主线程中创建两个线程对象并启动:
```java
public class Main {
public static void main(String[] args) {
StringBuffer buffer = new StringBuffer();
T t1 = new T(buffer);
T t2 = new T(buffer);
Thread thread1 = new Thread(t1, "t1");
Thread thread2 = new Thread(t2, "t2");
thread1.start();
thread2.start();
}
}
```
运行结果如下:
```
线程t1已执行,buffer内容为: tongxin
线程t2已执行,buffer内容为:Hello tongxin
```
阅读全文