Java 如何访问线程内的类

Java 如何访问线程内的类,java,multithreading,oop,Java,Multithreading,Oop,我尝试在gui类中执行以下操作,以通知已注册的观察者 public class GUI extends javax.swing.JFrame implements Observer { public notImportantMethod() { t = new Thread() { @Override public void run() { for (int i = 1; i <= 10; i++) {

我尝试在gui类中执行以下操作,以通知已注册的观察者

public class GUI extends javax.swing.JFrame implements Observer {

public notImportantMethod() {

 t = new Thread() {
            @Override
            public void run() {
                for (int i = 1; i <= 10; i++) {
                       myObject.registerObserver(this);   
                 }
            }

        };
        t.start();
      }
}
公共类GUI扩展了javax.swing.JFrame实现了Observer{
公共不重要方法(){
t=新线程(){
@凌驾
公开募捐{

对于(int i=1;i
现在引用了一个线程。您应该能够调用
GUI。此
。有关更多信息,请参阅。

如果您要查找快速和肮脏的线程:(这不是好的做法)

public notImportantMethod(){
最终GUI self=此;
t=新线程(){
@凌驾
公开募捐{

对于(int i=1;i@Ishnark回答正确。您应该能够通过
GUI访问它。这就是您需要做的一切。

您试图注册的实际对象是什么?GUI的线程还是实例?我正在尝试注册GUI
OuterEnclosingClassname。这
GUI。这将为您提供参考指向外部封闭类的当前对象GUI。当您仅使用
this
时,它指的是匿名类扩展
Thread
的对象注意:您的问题实际上不是关于线程。您的问题是匿名内部类的方法如何引用封闭类的实例已创建ner类实例。内部类扩展线程的事实不会改变答案。
public notImportantMethod() {

final GUI self = this;

 t = new Thread() {
            @Override
            public void run() {
                for (int i = 1; i <= 10; i++) {
                       myObject.registerObserver(self);   
                 }
            }

        };
        t.start();
      }
}