如何访问线程内的类

时间:2017-04-06 14:29:42

标签: 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++) {
                       myObject.registerObserver(this);   
                 }
            }

        };
        t.start();
      }
}

它给了我错误:不兼容的类型:无法转换为Observer 我该如何使用它?我知道在运行中有另一个上下文,但我怎么能访问它?

3 个答案:

答案 0 :(得分:3)

GUI.this现在引用一个Thread。您应该可以致电const event = $rootScope.$on('notifications.updated', (event, notifications) => { const notification = notifications ? notifications.values().next().value : null; if (notification) { _setNotification(notification); } else { _resetNotification(); } vm.enabled = !!notification; }); 。有关详细信息,请参阅 here

答案 1 :(得分:0)

如果你正在寻找快速和肮脏的东西:(这不是好习惯)

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();
      }
}

否则我建议在java中查找有关多线程和/或并发的教程,如下所示:http://winterbe.com/posts/2015/04/30/java8-concurrency-tutorial-synchronized-locks-examples/

答案 2 :(得分:0)

@Ishnark已正确回答。您应该可以通过GUI.this访问它,这就是您需要做的所有事情。