JavaFX中的自定义可运行节点
我有一个想法,创建执行任务的小部件,并可以添加到视图中,但我担心我可能从完全错误的角度处理问题。这是我的抽象类JavaFX中的自定义可运行节点,java,multithreading,javafx-2,javafx,Java,Multithreading,Javafx 2,Javafx,我有一个想法,创建执行任务的小部件,并可以添加到视图中,但我担心我可能从完全错误的角度处理问题。这是我的抽象类 public abstract class AbstractWidget extends AnchorPane { private Thread thread; protected Task<?> task; public AbstractWidget() { } public void start() {
public abstract class AbstractWidget extends AnchorPane
{
private Thread thread;
protected Task<?> task;
public AbstractWidget()
{
}
public void start()
{
this.thread = new Thread(this.task);
this.thread.start();
}
public void stop()
{
this.task.cancel();
}
}
一切都很好,但这是正确的方式吗?我使用任务而不是服务,因为程序的运行操作可以停止并重新启动,但从不暂停和恢复。我决定只使用服务。处理可以多次运行的函数要容易得多
public abstract class AbstractWidget extends Whatever
{
protected Service<?> service;
public AbstractWidget()
{
}
public void start()
{
service.start();
}
public void stop()
{
service.cancel();
service.reset();
}
}
公共抽象类AbstractWidget扩展了
{
受保护服务;
公共抽象控件()
{
}
公开作废开始()
{
service.start();
}
公共停车场()
{
service.cancel();
service.reset();
}
}
然后您可以创建一个类,如:
public class MyWidget() extends AbstractWidget
{
public MyWidget()
{
this.service. = new MyService();
}
private class MyService extends Service<Void>
{
protected Task<Void> createTask()
{
@Override
return new Task<Void>()
{
// whatever
}
}
}
}
公共类MyWidget()扩展了AbstractWidget
{
公共MyWidget()
{
this.service.=new MyService();
}
私有类MyService扩展服务
{
受保护的任务createTask()
{
@凌驾
返回新任务()
{
//随便
}
}
}
}
public abstract class AbstractWidget extends Whatever
{
protected Service<?> service;
public AbstractWidget()
{
}
public void start()
{
service.start();
}
public void stop()
{
service.cancel();
service.reset();
}
}
public class MyWidget() extends AbstractWidget
{
public MyWidget()
{
this.service. = new MyService();
}
private class MyService extends Service<Void>
{
protected Task<Void> createTask()
{
@Override
return new Task<Void>()
{
// whatever
}
}
}
}