Java 如何访问线程内的类
我尝试在gui类中执行以下操作,以通知已注册的观察者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++) {
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的线程还是实例?我正在尝试注册GUIOuterEnclosingClassname。这即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();
}
}