草庐IT

Swingworker

全部标签

Java - SwingWorker 和 SwingUtilities.invokeLater() 之间的区别

SwingWorker用于以下目的:用于在不同的线程中运行长时间运行的任务,以防止GUI无响应用于在任务结束时通过done()方法使用长时间运行的任务产生的结果更新GUI。在publish()和process()方法的帮助下,使用任务生成和发布的中间结果不时更新GUI。SwingUtilities.invokeLater()可以按如下方式执行上述任务:我们可以执行ExecutorService.submit(newMyRunnable())而不是从EDT执行SwingWorker.execute()方法,因为它还会创建另一个线程可以执行长时间运行的任务。为了在任务结束时更新GUI,我们

java - 回合制游戏设计 : Event-Driven vs. 游戏循环

我正在用Java创建我的第一款游戏。游戏是大富翁。我正在为如何设计游戏来模拟其回合制结构(管理玩家回合)而苦苦挣扎。我想允许一个人控制的玩家和一个或多个人工智能控制的玩家玩游戏。我的具体问题是,我不知道是否要实现一个游戏循环,意思是一个可以管理玩家和与大富翁游戏直接相关的变量的循环,(想想诸如提示每个玩家他们的回合,将回合增加到下一个玩家,或者从每个玩家那里获得骰子——轮流)。我指的不是术语“游戏循环”的更底层含义,它更多地涉及在屏幕上绘制帧、更新物理或以特定时间速率更新AI。我的理解是,我尝试实现我需要的选项是:实现一个没有此类游戏循环的完全事件驱动的程序,或者实现一个游戏循环——在

java - 多次执行SwingWorker

我希望能够多次使用SwingWorker子类。这可能吗?我已经阅读了java文档:SwingWorkerisonlydesignedtobeexecutedonce.ExecutingaSwingWorkermorethanoncewillnotresultininvokingthedoInBackgroundmethodtwice. 最佳答案 实现SwingWorker的类的一个实例确实只能运行一次。根据需要实例化并运行它们没有任何限制。 关于java-多次执行SwingWorker,

java - 即使使用包装类,SwingWorker 异常也会丢失

我一直在努力解决SwingWorker吃掉后台任务中抛出的任何异常的可用性问题,例如,描述onthisSOthread.该线程很好地描述了问题,但没有讨论恢复原始异常。我收到的小程序需要向上传播异常。但我什至没能捕获它。我正在使用thisblogentry中的SimpleSwingWorker包装器类专门尝试解决这个问题。这是一个相当小的类(class),但我会在最后重新发布它以供引用。调用代码大致类似try{//lotsofcodeheretopreparedata,finishingwithSpecialDataHelperhelper=newSpecialDataHelper(.

java - 可以运行的 swing 工作线程的最大数量是多少

可运行的SwingWorker线程数是否有上限,或者内存支持多少?这也可以在某处配置吗? 最佳答案 SwingWorker本身不是线程,而是将在线程中执行的任务。通常,您会使用ExecutorService来执行SwingWorker的实例;此接口(interface)还允许设置线程数:intn=20;//MaximumnumberofthreadsExecutorServicethreadPool=Executors.newFixedThreadPool(n);SwingWorkerw;//don'tforgettoinitial

java - 是否有用于 java 的 Backgroundworker(例如在 .Net 中)

Backgroundworker使进程在后台运行而不会使应用程序滞后,我们将感谢您提供任何有关它的信息。 最佳答案 对于Android应用程序使用AsyncTaskhttp://developer.android.com/reference/android/os/AsyncTask.htmlprivateclassDownloadFilesTaskextendsAsyncTask{protectedLongdoInBackground(URL...urls){intcount=urls.length;longtotalSize=0;

java - Java的SwingWorker和Android的AsyncTask的区别

我正在比较Swing的SwingWorker和Android的AsyncTask类之间的区别。虽然Android有一个主线程/UI线程,然后生成一个后台线程(使用AsyncTask),但SwingWorker有三个涉及的线程-当前线程工作线程事件派发线程。然后我也看到了声明(在文档中)-Often,theCurrentthreadistheEventDispatchThread.现在,这是什么意思?这是否意味着Swing也只有1个线程-主线程和甚至在同一线程上接收事件OR不同的JVM实现是否不同? 最佳答案 这只对Swing有效,S

tcp - 给定 TCP,当 IO 是非阻塞时,State Design Pattern 是否用处不大?

在我的TCP应用程序中,只要IO处于阻塞状态,状态设计模式似乎就很有用。我的SwingWorker的doInBackground()可以通过引用一个对象循环访问TCP连接中的读取、写入和接受状态。请参阅维基百科讨论页上的示例:http://en.wikipedia.org/wiki/Talk%3AState_pattern.然而,当我将服务器重构为非阻塞IO时,它似乎不再有用了。Select()返回一组准备好进行IO的channel,这些channel通过引用一系列if语句中的SelectionKey状态来处理。任何人都可以根据经验或理解来确认当IO是非阻塞时状态设计模式是否仍然有用?

java - SwingWorker 和 SwingUtilities.invokeLater 的区别

我需要在单独的线程中运行Swing应用程序中的某些方法。使用SwingWorker和SwingUtilities.invokeLater有什么区别。我应该使用哪个来在Swing应用程序中运行线程?我无法在教程中找到确切的信息,网址为http://java.sun.com/docs/books/tutorial/uiswing/concurrency/index.html 最佳答案 SwingUtilities.invokeLater如果您有必须在EDT中运行的内容,则使用它。如果您有一个长时间运行的任务,则需要使用SwingWork

java - Swingworker 实例未同时运行

我的电脑有4个内核,我正在运行一个Javaswinggui程序。当我运行我的应用程序时,它只使用两个内核和大约30%的CPU使用率。我有大量文件要处理,想将它们分成两个线程以使用更多CPU更快地完成此任务。我有一个名为PrepareTask的SwingWorker类,它有一个包含两个整数的构造函数:classPrepareTaskextendsSwingWorker{intstart,end;PrepareTask(intstart,intend){...}...publicVoiddoInBackground(){...}publicvoiddone(){...}我创建了两个这样的实