java-swingworker
来源:互联网 发布:紫鸟亚马逊数据魔方 编辑:程序博客网 时间:2024/05/21 15:00
原来还有这个东西哇,之前一直以为如果做耗时的操作,要写成
然后里面还有来回的调用,我觉得不需要深究了,只要知道这个方法比较好用,并且可以得到进度(getProgress())可以取消(cancel()),可以查看是否完成(isDone())以及查看是否取消了(isCalcelled())就足够了。
SwingUtilities.invokeLater(new Runnable() {@Overridepublic void run() {// TODO Auto-generated method stub}});
然后里面写成耗时的操作,然后改变界面,如果很耗时,还会多嵌套一层Thread。
现在,这个东西可以做同样的事情,而且似乎更好用诶。这玩意是1.6才开始有的,不过1.8都出来了,落伍啊~~~还在用thread.stop的说。
new SwingWorker<Void,String>(){@Overrideprotected Void doInBackground() throws Exception {// TODO Auto-generated method stubreturn null;}};再摘抄一段此类的说明文档中的示例代码,感觉就很强大啊有木有啊。
class PrimeNumbersTask extends SwingWorker<List<Integer>, Integer> { PrimeNumbersTask(JTextArea textArea, int numbersToFind) { //initialize } @Override public List<Integer> doInBackground() { while (! enough && ! isCancelled()) { number = nextPrimeNumber(); publish(number); setProgress(100 * numbers.size() / numbersToFind); } } return numbers; } @Override protected void process(List<Integer> chunks) { for (int number : chunks) { textArea.append(number + "\n"); } } }
但是按照里面excute()调用的方法来看,只不过是他通过代码托管了一个Thread而已
/** * returns workersExecutorService. * * returns the service stored in the appContext or creates it if * necessary. * * @return ExecutorService for the {@code SwingWorkers} */ private static synchronized ExecutorService getWorkersExecutorService() { final AppContext appContext = AppContext.getAppContext(); ExecutorService executorService = (ExecutorService) appContext.get(SwingWorker.class); if (executorService == null) { //this creates daemon threads. ThreadFactory threadFactory = new ThreadFactory() { final ThreadFactory defaultFactory = Executors.defaultThreadFactory(); public Thread newThread(final Runnable r) { Thread thread = defaultFactory.newThread(r); thread.setName("SwingWorker-" + thread.getName()); thread.setDaemon(true); return thread; } }; executorService = new ThreadPoolExecutor(MAX_WORKER_THREADS, MAX_WORKER_THREADS, 10L, TimeUnit.MINUTES, new LinkedBlockingQueue<Runnable>(), threadFactory); appContext.put(SwingWorker.class, executorService); // Don't use ShutdownHook here as it's not enough. We should track // AppContext disposal instead of JVM shutdown, see 6799345 for details final ExecutorService es = executorService; appContext.addPropertyChangeListener(AppContext.DISPOSED_PROPERTY_NAME, new PropertyChangeListener() { @Override public void propertyChange(PropertyChangeEvent pce) { boolean disposed = (Boolean)pce.getNewValue(); if (disposed) { final WeakReference<ExecutorService> executorServiceRef = new WeakReference<ExecutorService>(es); final ExecutorService executorService = executorServiceRef.get(); if (executorService != null) { AccessController.doPrivileged( new PrivilegedAction<Void>() { public Void run() { executorService.shutdown(); return null; } } ); } } } } ); } return executorService; }
然后里面还有来回的调用,我觉得不需要深究了,只要知道这个方法比较好用,并且可以得到进度(getProgress())可以取消(cancel()),可以查看是否完成(isDone())以及查看是否取消了(isCalcelled())就足够了。
0 0
- java SwingWorker
- java-swingworker
- SwingWorker
- SwingWorker
- SwingWorker
- java 简单示例关于swingworker
- 【Java线程】SwingWorker的用法
- java线程swingworker的运用
- 【JAVA线程】SwingWorker的用法
- 【转】Java SwingWorker(一)
- 【转】Java SwingWorker(二)
- 【转】Java SwingWorker(三)
- 【Java线程】SwingWorker的用法
- Java界面中使用SwingWorker
- java学习之浅谈多线程4--SwingWorker
- [Java GUI]使用SwingWorker出现的问题
- Exception in thread "AWT-EventQueue-0" java.lang.NoClassDefFoundError: org/jdesktop/swingworker/SwingWorker
- Improve Application Performance With SwingWorker in Java SE 6
- 补遗篇之sizeof
- 7、UIButton-OC+UI
- NYOJ NO.513 A+B Problem IV
- 表数据和索引数据分开独立表空间存储优点
- Ext combobox 在更新的时候数据回显 自动填充
- java-swingworker
- Caching with Spring Data Redis
- JVM framework
- [Java]知乎下巴第1集:爬虫世界百度不仅仅可以拿来测网速
- 零式求和
- 计算时代
- MVC评点
- JBoss服务器 /invoker/JMXInvokerServlet/ 接口对外开放
- Sqlite数据库图片存取