javafx并发初步
2020-11-25 00:24
标签:javafx 并发 线程 javafx.concurrency并发包是为方便javafx Application Thread也就是javafx的UI线程与后台线程安全交互的工具包。 Worker接口封装了Worker.State枚举作为Worker的状态:READY,SCHEDULED,RUNNING,SUCCEDED,FAILED,CANCELLED. Worker拥有下面这些只读property. Worker同时有这些状态对应的Proeprt那就是state,以便于JavaFX Application Thread可以进行observable. Worker还拥有除了状态对应的property之外几个个有用的property:progress,totalWork,message,title,value,exception,running, workDone Woker有三个直接实现:Task与Service,ScheduledService,根据不同的实现决定Worker的可复用性,Task是不可以重用的,只能被执行一次,而Service可以重复执行。 类:Task,Service, ScheduledService,他们都实现了EventTarget接口,并拥有addEventHandler()方法,可以检测通过WorkerStateEvent对象进行检测状态的变化。当然也可以通过property Bindings机制代替。 Task继承了java.util,concurrency.FutureTask类。 Task是不可以重复执行的Worker 运行方式:1. new Thread(task).start(); 2.ExecutorService.submit(task); 3.其他。 Task中有许多updateXXX方法用于改变相应的property。setOnXXX方法用于设置EventHandler. 继承Task需要覆盖其call()方法,call()方法会在后台线程中被调用。 由于java中并没有安全的线程中断机制,所以你必须在call()方法内部对isCancelled()进行判断
Service会封装Task,并负责后台执行它封装的Task。 Service是可重复执行的。 Service可以被注入Executor依赖,并通过注入的Executor执行实际的Task。否则Service只会构造一个简单的Thread执行。 Service通过Service的start()方法执行任务。 可以通过WorkerStateEvent监听变化。
ScheduledService在fails失败时是否会自动重新开始以及自动执行的次数取决于:restartOnFailure,backoffStrategy,cumulativePeriod,maximumFailureCount几个property,
对于确实需要在另外一个线程与Application Thread进行交互的可以使用Platform.runLater(new Runnable(){}); javafx并发初步,搜素材,soscw.com javafx并发初步 标签:javafx 并发 线程 原文地址:http://blog.csdn.net/xby1993/article/details/24811099接口:Worker.
Task:
Task
Task
典型的例子就是更新进度的问题:这里通过property bindings机制
Task task = new Task
注意:updateProgress(workDone,totalWork);它会同时更新progress,totalWork,workDone三个property.
Service:
private static class FirstLineService extends Service
FirstLineService service = new FirstLineService();
service.setUrl("http://google.com");
service.setOnSucceeded(new EventHandler
ScheduledService:
ScheduledService是一个可以自动重新开始的任务执行器。
ScheduledService
上一篇:两维的动态数组的C++封装