gpt4 book ai didi

java - EventQueue.invokeLater 与 start() 线程相比有何作用?

转载 作者:行者123 更新时间:2023-11-29 03:21:11 27 4
gpt4 key购买 nike

大家好,我是 Opp 和 Java 的新手。

我看到了一些关于线程的东西,实现了 Runnable 和 start() 来调用 run()。

但这有什么作用呢?

EventQueue

invokeLater();

或者您可以在这篇文章中找到关于 main 方法的完整行: JTextFields on top of active drawing on JPanel, threading problems

和主要方法上的相同答案: Java page flipping not supported on Mac OS?

EventQueue.invokeLater(new NewTest());

那个调用了run()方法?和

有什么区别
Thread var = new Thread(this);
var.start();

最佳答案

Swing API 是单线程的:您只能从 swing 线程调用 Swing 组件上的方法。

您的应用程序中可以有多个线程,但当另一个线程需要与 swing 组件交互时,它需要使用 EventQueue.invokeLater 来完成。这确保 Runnable 在正确的线程上运行。

启动您自己的 Thread 没有这种效果(在 Swing 线程上运行),因此它不是替代方案。如果这样做,可能会导致数据损坏、屏幕更新不正确等。这可能是暂时的,但也可能是无法修复的。

但是 invokeLater 方法不能替代运行您自己的线程或使用线程池,因为传递给它的所有 Runnables 都是按顺序执行的,而不是并行执行的.

关于java - EventQueue.invokeLater 与 start() 线程相比有何作用?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23559744/

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