我用java编写了一个用同步模拟生产用水的程序(Oxygen等待Hydrogen可用),但它给出了“意外的操作执行”并且没有工作...... 请帮帮我......
有我的代码:
//线程氧气的类 公共类Thread_O实现了Runnable {
Object object;
public Thread_O(Object o) {
object = o;
}
public void run() {
try {
oxygen();
} catch (InterruptedException ex) {
Logger.getLogger(Thread_O.class.getName()).log(Level.SEVERE, null, ex);
}
throw new UnsupportedOperationException("Not supported yet.");
}
public void oxygen() throws InterruptedException {
System.out.println("One O2 created...");
synchronized (object) {
object.wait();
object.wait();
}
System.out.println("**** H2O created...");
}
}
//线程氢的类 公共类Thread_H实现了Runnable {
Object object;
public Thread_H(Object o) {
object = o;
}
public void run() {
try {
Hydrogen();
} catch (InterruptedException ex) {
Logger.getLogger(Thread_H.class.getName()).log(Level.SEVERE, null, ex);
}
throw new UnsupportedOperationException("Not supported yet.");
}
public void Hydrogen() throws InterruptedException {
System.out.println("One H2 created...");
synchronized (object) {
object.notifyAll();
}
}
}
//在我们的主要课程中:
Object object = new Object();
//在Oxygen的按钮中:
Thread thread_O = new Thread(new Thread_O(object));
thread_O.run();
//在氢气按钮中:
Thread thread_H = new Thread(new Thread_H(object));
thread_H.run();
答案 0 :(得分:3)
顺便说一下,线程以方法start()
no run()
开头。如果您调用run()
,则执行该方法,但在当前线程中不执行新方法。
答案 1 :(得分:2)
您的代码在Thread_O类的方法run()的最后一行抛出异常。
您需要删除此行。
答案 2 :(得分:0)
您的程序在Thread_H和Thread_O run()方法中抛出异常。您已经为run()方法提供了实现,因此删除引发异常的行。删除这些行。
throw new UnsupportedOperationException("Not supported yet.");
@Gaim是正确的,您需要使用start()开始执行线程。