إخطار مستمع الموضوع

أواجه مشكلة مع الفصل الذي يتعامل مع موضوع كامل. فإنه schould إعلام مؤشرات الترابط الأخرى التي fineshed بحيث يمكن بدء الثاني. هذا هو هيكل مشروعي:

على MainClass.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

}   

}

Class - 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 استثناء في موضوع "الرئيسي"

هل يمكن لأي شخص أن يساعد في الحصول على هذا في سلام واحد أو أن يقول ما أفعله خطأ في الكود؟

شكرا جزيلا لأي نصيحة!

0
notifyOfThreadComplete فارغ. إنه ليس سبب الخطأ ، ولكنه لن يعمل كما هو متوقع.
وأضاف المؤلف Alex, مصدر

2 إجابة

استبدل الرئيسية العامة باطلة

مع عام ثابت void main

0
وأضاف
عندما أقوم بإبدال الرئيسي العام باطل الرئيسي العام باطل لا أستطيع استخدام test.addListener ((ThreadCompleteListener) هذا) ؛ لأنني حصلت على أنه لا يمكن استخدامها في contex ثابت
وأضاف المؤلف Mister S, مصدر
نعم ، لقد حظيت بها .... كانت نصيحتك حول مربع بحث Google مفيدة جدًا ... إنها أداة موسعة ليست كذلك؟
وأضاف المؤلف Mister S, مصدر
MisterS بالطبع سوف تحصل على خطأ !! تحتاج إلى استبدال هذا بـ new MainClass()
وأضاف المؤلف Adel Boutros, مصدر

أعتقد أنه يجب استبدال:

public void main(String[] args)

إلى عن على

public static void main(String[] args)
0
وأضاف