gpt4 book ai didi

java - Thread.start() 不初始化 run()

转载 作者:行者123 更新时间:2023-12-01 18:38:01 25 4
gpt4 key购买 nike

我的代码有一些问题。由于某种原因,我的 thread.start() 没有激活我的 run() 方法。在纯粹的绝望中,我只是用打印函数替换了 run() 中的代码,但没有打印任何内容。有人可以帮助我解释我的代码中有什么问题吗?

public class Screen extends JPanel implements Runnable{
Thread thread = new Thread();

Frame frame;

public Screen(Frame frame){
this.frame = frame;
frame.setSize(horizontal * 25 + 24 , (vertical) * 25 + 48);
this.frame.addKeyListener(new KeyHandler(this));
thread.start();
}
public void run(){
System.out.println("Boom");
}
}

我在这段代码之间和下面有很多东西,但这是线程和框架唯一必需的部分。

最佳答案

您必须向Thread传递一个Runnable。由于 thread 是一个实例变量,并且该类实现了 Runnable 我猜你想这样做:

Thread thread = new Thread(this);

但是从构造函数调用可重写方法时要小心,如果这些方法是由与构造函数初始化并行运行代码的单独线程调用的,则要更加小心。它可能会在构造函数仍在初始化对象时运行。想一想,如果您子类化 Screen,重写 run 方法,并且 run 方法在初始化时访问父类(super class) Screen 的属性,会发生什么情况。

另请参阅What's wrong with overridable method calls in constructors?

关于java - Thread.start() 不初始化 run(),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20998371/

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