我知道这是如此多的多线程线程。我已经读过很多了。我已经阅读了基本的线程教程。但没有人回答我的问题,我有几个。
问题1:
当创建一个实现 Runnable 接口(interface)的类时,我必须实现 Run() 方法。
如果我创建一个新线程,例如:
Thread t1 = new Thread();
它在调用start方法时执行run方法,对吧?
现在我希望我的线程 t1 执行线程中的另一个方法。
我面临以下情况:
tblGames = new JTable(new GamesTableModel(mainController.retrieveGames()));
我认为这是令人讨厌的编码。 我认为最好像这样实例化一个列表变量:
List<Game> games = mainController.retrieveGames();
现在发生的情况是,加载表内容时 GUI 卡住(使用 JPA) 所以我想在另一个线程中运行它。我正在使用 GamesTableModel 来处理 JTable 的列等,因此我在新 GamesTableModel 的构造函数中传递一个列表
我在哪里创建一个新线程,我是否将其创建为 MainController 类,如果是,
(有关方法如下:)
public List<Game> retrieveGames(){
List<Game> games = gameRepository.getGames();
return games;
}
我将如何去运行该方法的内容,或者在不同的线程中运行整个方法,实际上,最好将整个 MainController 放在一个新线程中,这样它就永远不会卡住 UI,还是不建议这样做?
如果建议的话,我是否需要在 UI 中创建一个线程?然后谁引出了一个问题,我将如何运行
MainController mainController = new MainController();
在新线程中?
我以前从未在程序中正确实现过线程,因此我的新手问题。
我对接口(interface)中的 run 方法主要关心的是,该内容适用于实现类权限中的所有线程?
我需要单独的线程来执行几种不同的方法。
现在的主要问题是使用新线程来填充 JTable 的内容来获取内容。
很抱歉让您阅读冗长乏味的内容。感谢您还在这里。
我希望得到有关我的问题的一些澄清。
最佳答案
“它在调用start方法时执行run方法,对吧?”
是的。
您的所有其他问题:您不应该 access Swing components outside of Even Dispatching Thread (美东时间)。这就是为什么你会被卡住。您应该使用SwingWorker从后台线程访问 Swing 时。
关于Java 多线程不清楚,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5191621/