相关疑难解决方法(0)

Swingworker实例不同时运行

我的电脑有4个内核,我正在运行Java swing gui程序.当我运行我的应用程序时,它只使用两个内核和大约30%的CPU利用率.我有大量要处理的文件,并希望将它们分成两个线程,以便使用更多的cpu更快地完成此任务.

我有一个名为PrepareTask的SwingWorker类,它有一个带有两个int的构造函数:

class PrepareTask extends SwingWorker<Void, Void> {
  int start, end;
  PrepareTask (int start, int end) { ... }
  ...
    public Void doInBackground() {... }
    public void done() { ... }
Run Code Online (Sandbox Code Playgroud)

我创建了两个这样的实例:

  PrepareTask prepareTask = new PrepareTask(0,numberOfFiles/2);
  prepareTask.execute();
  PrepareTask prepareTask2 = new PrepareTask(numberOfFiles/2, numberOfFiles);
  prepareTask2.execute();
Run Code Online (Sandbox Code Playgroud)

两者都启动(看起来)但是当它运行时我可以看到(打印stmts)第一个准备必须完成(在第二个开始之前打印内部).CPU利用率与以前相同,约为30%.它们当然都从同一个源中获取数据,即DefaultTableModel.

关于如何做到这一点或我做错了什么的想法?谢谢.

java swing swingworker

11
推荐指数
1
解决办法
1236
查看次数

actionPerformed(ActionEvent e){

我正在使用不同的按钮构建一个grpahic界面,当用户单击按钮时,我使用:

actionPerformed(ActionEvent e) {
Object source = e.getSource();
if
else if
else if
...
}
Run Code Online (Sandbox Code Playgroud)

问题是当用户点击一个按钮时,actionPerformed(ActionEvent e)被调用,并且它输入if对应的e.getSource();.并执行相应if中的所有指令.但我想让用户点击不同的按钮成为可能,这样就actionPerformed(ActionEvent e)可以调用{,即使前一个指令actionPerformed(ActionEvent e){尚未完成.

我不知道你是否理解,但如果你能帮助我,谢谢!

java action awt actionevent

0
推荐指数
1
解决办法
2187
查看次数

标签 统计

java ×2

action ×1

actionevent ×1

awt ×1

swing ×1

swingworker ×1