Java多线程不一致性
我知道这就是所谓的manieth多线程。我读了很多。我读过基本的线程教程。但没有人回答我的问题,我有几个问题
问题1:
在创建实现Runnable接口的类时,我必须实现Run()方法
如果我创建一个新线程,比如:
Thread t1 = new Thread();
它在调用start方法时执行run方法,对吗
现在我希望我的线程t1在线程中执行另一个方法
我面临以下情况:
tblGames = new JTable(new GamesTableModel(mainController.retrieveGames()));
我认为这是一个糟糕的编码。 我认为最好是像这样实例化一个列表变量:
List<Game> games = mainController.retrieveGames();
现在的情况是,当加载表内容时(使用JPA),GUI会冻结 所以我想在另一个线程中运行它。我使用GamesTableModel来处理JTable的列等,因此我在新GamesTableModel的构造函数中传递了一个列表
我在哪里创建一个新线程,我在MainController类中创建它,如果是
(方法如下所示:)
public List<Game> retrieveGames(){
List<Game> games = gameRepository.getGames();
return games;
}
我将如何运行该方法的内容,或者在另一个线程中运行整个方法,实际上,最好将整个MainController放在一个新线程中,这样就永远不会冻结UI,或者这是不可取的
如果可行,我需要在UI中创建一个线程吗?那么,是谁引出了这个问题:我将如何竞选
MainController mainController = new MainController();
用新的思路
我以前从未在程序中正确地实现过线程,因此我提出了一些新问题
我对接口中的run方法主要关心的是,内容是否适用于实现类权限中的所有线程
我需要单独的线程来执行几种不同的方法
现在的主要问题是使用一个新线程来填充JTable的内容
很抱歉读了这么长时间。谢谢你还在这里
我希望得到一些关于我的问题的澄清
# 1 楼答案
首先,在构造函数上运行持久的数字运算通常是个坏主意。因此,我首先将咀嚼分成不同的方法,如下所示:
然后你可以在线程中运行该部分:
现在你可以打电话到其他地方: