gpt4 book ai didi

java - keyPressed() 方法在哪个线程中调用?

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

这里有两个类:

public class Cls implements Runnable, KeyListener
Thread t;
Object obj;
public Cls(Thing obj) {
this.obj = obj;
...

void keyPressed(KeyEvent e) {
...
}

void run() {
...

void start() {
if (t != null)
t = new Thread(this, "we");
t.start();

还有:

public class Main extends JPanel {
public static void main (String[] args)
{
Thing obj = new Thing(stuff);
Cls cl = new Cls(obj);
addKeyListener(cls);
...
}

(目前如何添加 KeyListener 可能存在一些不准确之处,但我的观点是它被添加到 Main 类中的 Cls 实例中)

现在,如果发生 KeyEventkeyPressed 方法会在 main() 的线程中还是在 Cls< 中运行'?询问是因为 Cls 线程的 run() 方法将运行无限循环,因此如果它运行在 Cls' 线程。

此外,正如您所看到的 Thing 实例,obj 在 Main 中实例化并按原样传递给 Cls' 构造函数。知道Cls不断修改obj并且Main使用它(不以任何方式修改它),用sychronized包装负责的代码块就足够了强制顺序访问?请随时提供您可能想要分享的任何见解。

最佳答案

AWT 事件监听器在事件调度线程中执行。

阅读Swing concurrency tutorial .

关于java - keyPressed() 方法在哪个线程中调用?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33397979/

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