Java 多线程不清楚

标签 java multithreading jtable

我知道这是如此多的多线程线程。我已经读过很多了。我已经阅读了基本的线程教程。但没有人回答我的问题,我有几个。

问题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 的内容来获取内容。

很抱歉让您阅读冗长乏味的内容。感谢您还在这里。

我希望得到有关我的问题的一些澄清。

最佳答案

  1. “它在调用start方法时执行run方法,对吧?”

    是的。

  2. 您的所有其他问题:您不应该 access Swing components outside of Even Dispatching Thread (美东时间)。这就是为什么你会被卡住。您应该使用SwingWorker从后台线程访问 Swing 时。

关于Java 多线程不清楚,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5191621/

相关文章:

java - 如何在hql中对两个具有相同关键字的字段进行搜索操作?

c# - 依赖私有(private)方法测试公共(public)方法的方法

c# - Socket.*Async 方法是线程化的吗?

java - 从特定列中选择 jtable 单元格

java - JTable 单元格跨度合并

java - netbeans 中的 checkstyle 插件,用于生成违反约定的 build.xml 目标规范

java多线程-等待可用线程创建和分配下一个任务

C++ 11通过两种算法之一完成任务

java - 在 JTable 中显示 HTML

java - 单击复选框时,CheckboxTableViewer 不会更改表行的焦点