gpt4 book ai didi

java - 线程监听器通知

转载 作者:行者123 更新时间:2023-12-03 12:48:05 25 4
gpt4 key购买 nike

我在处理线程完成的类时遇到问题。它应该通知其他线程已完成,以便第二个线程可以启动。这是我的项目结构:

主类.java

public class MainClass implements ThreadCompleteListener {

public void main(String[] args) throws InterruptedException {

NotifyingThread test = new Thread1();
test.addListener((ThreadCompleteListener) this);
test.start();

}

@Override
public void notifyOfThreadComplete(Thread thread) {
// TODO Auto-generated method stub

}

}

类 - Thread1.java

public class Thread1 extends NotifyingThread {

@Override
public void doRun() {
try {
metoda();
} catch (InterruptedException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}

public static synchronized void metoda() throws InterruptedException {
for(int i = 0; i <= 3; i++) {
Thread.sleep(500);
System.out.println("method in Thread1");
}
}

public void notifyOfThreadComplete(Thread thread) {
// TODO Auto-generated method stub

}
}

NotifyingThread.java

import java.util.Set;
import java.util.concurrent.CopyOnWriteArraySet;

public abstract class NotifyingThread extends Thread {
private final Set<ThreadCompleteListener> listeners = new CopyOnWriteArraySet<ThreadCompleteListener>();
public final void addListener(final ThreadCompleteListener listener) {
listeners.add(listener);
}

public final void removeListener(final ThreadCompleteListener listener) {
listeners.remove(listener);
}

private final void notifyListeners() {
for (ThreadCompleteListener listener : listeners) {
listener.notifyOfThreadComplete(this);
}
}

@Override
public final void run() {
try {
doRun();
} finally {
notifyListeners();
}
}

public abstract void doRun();
}

ThreadCompleteListener.java

public interface ThreadCompleteListener {
void notifyOfThreadComplete(final Thread thread);
}

我面临的问题是,当我执行 MainClass 时,我收到类似以下的错误:发生致命异常。程序将退出并在控制台中出现:

java.lang.NoSuchMethodError: 主要线程“main”中的异常

任何人都可以帮助在一次工作和平中实现这一目标,或者告诉我我在代码中做错了什么吗?

非常感谢任何建议!

最佳答案

替换 public void main

public static void main

关于java - 线程监听器通知,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11154370/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com