更改javafx.concurrent.Task的名称或标题

时间:2014-08-21 06:50:13

标签: javafx javafx-8

是否可以更改/设置 javafx.concurrent.Task 的名称或标题,就像在Thread thread.setName(" name")中一样?

2 个答案:

答案 0 :(得分:3)

我猜你还没有理解javafx.concurrent.Task

的概念 与TaskThreads相同,

RunnableThread具有相同的差异。

您能为Runnable对象命名吗?

仍然困惑?关于背景的解释..

来自文档

public abstract class Task<V>
    extends java.util.concurrent.FutureTask<V>
                   implements Worker<V>, EventTarget

<强> FutureTask

  

FutureTask可用于包装Callable或Runnable对象。   因为FutureTask实现了Runnable,所以可以提交FutureTask   执行人执行。

<强>任务

  

同样,由于Task从FutureTask扩展,因此非常简单   自然地使用带有java并发Executor API的Task。既然一个   任务是Runnable,你也可以直接调用它(通过调用   FutureTask.run()方法)来自另一个后台线程。这允许   对于工作的组合,或将其传递给构造的新线程和   手动执行。

基本上,您需要ThreadExecutor来执行Task,我希望您已经知道如何命名ThreadThreads spawned from Executors; )

如果没有..

答案 1 :(得分:3)

javafx.concurrent.Task有一个title属性,您可以使用受保护的方法updateTitle(String newTitle)在任务中更新。

回应Edv Beq的评论: 来自[docs | https://docs.oracle.com/javase/8/javafx/api/javafx/concurrent/Task.html#updateTitle-java.lang.String-]

  

updateTitle protected void updateTitle(String title)

     

更新标题   属性。对updateTitle的调用将合并,并在FX上运行   应用程序线程,所以甚至从FX调用updateTitle   应用程序线程可能不一定会导致立即更新   此属性和中间标题值可以合并以保存   关于事件通知。

     

可以安全地从任何线程调用此方法。

我的预感是标题更新正在排队到jfx线程,但是你试图立即访问它,而不是得到你期望的结果。我知道这不是你要求的例子,但我希望它有所帮助。