编写java代码,要求:定义静态成员变量content,main方法中另外定义一个Thread重写run方法,在Thread方法中对content赋值,在main方法中输出content,使用wait和notify解决NullPointerException问题
时间: 2024-04-07 18:33:41 浏览: 64
好的,以下是满足您要求的Java代码:
```java
public class Main {
private static String content;
public static void main(String[] args) {
Thread thread = new Thread() {
@Override
public void run() {
synchronized (Main.class) {
content = "Hello, World!";
Main.class.notify();
}
}
};
synchronized (Main.class) {
try {
thread.start();
Main.class.wait();
System.out.println(content);
} catch (InterruptedException e) {
e.printStackTrace();
}
}
}
}
```
在上述代码中,我们定义了一个静态成员变量 `content`。然后,在 `main` 方法中创建了一个匿名内部类 `Thread`,重写了 `run` 方法。在 `run` 方法中,我们使用 `synchronized` 关键字对 `Main.class` 进行同步,将值赋给 `content`,并调用 `notify` 方法来唤醒等待的线程。
在 `main` 方法中,我们再次使用 `synchronized` 关键字对 `Main.class` 进行同步。首先启动子线程并进入等待状态,然后调用 `wait` 方法来等待子线程的完成。当子线程执行完毕后,它会调用 `notify` 方法来唤醒等待的线程。最后,输出 `content` 的值。
这样使用 `wait` 和 `notify` 解决了可能出现的 `NullPointerException` 问题。
阅读全文