当前位置: 首页 > 知识库问答 >
问题:

有可能有一个实现Runnable()的类来拥有一个方法,它将自己用于一个新线程吗?

从渊
2023-03-14

我试图构建一个实现Runnable的任务对象,该对象通过begin()方法生成一个新线程,将其自身用作线程中的Runnable对象?

public abstract class Task implements Runnable {
static final int ABOUT_TO_RUN = 0;
static final int RUNNING = 1;
static final int DONE_RUNNING = 2;

int someProperty;
int anotherProperty;

int state = ABOUT_TO_RUN;           //lets start in a not ran state

public abstract void run();

//some other common methods I want here

public void beginTask() {
    if (this.state == ABOUT_TO_RUN) {
        this.state == RUNNING;
        new Thread(this).start();   //Here is where my question refers too
        this.state == DONE_RUNNING;
    }
}

然后...

public class CleanTask extends Task {

public CleanTask() {
}

@Override
public void run() {
    //some code that does a cleaning task in a database
}
}

这可能吗?或者抽象的可运行类在新线程中使用自己会有问题吗?

共有1个答案

吕飞翼
2023-03-14

是的,完全有可能。您的CleantAsk已经是用于扩展TaskRunnable的实现。线程需要一个runnable作为它的目标,因此它实际上可以执行cleantaskrun方法

但是请尝试使用executors,它已经实现了这样的功能。

 类似资料:
  • 我有一个关于接口的问题,比如: 现在,我需要这只猫去抓一只老鼠void catchMouse(){std::cout 有几种可能的解决方案,但看起来都不好。 > 在IAnim中添加一个方法,然后使用AnimalFactory创建猫后,我可以从IAnimal调用catchMouse()方法。但是catchMouse并不适用于所有动物,狗不catchMouse。将方法添加到IEM会污染界面,嗅到代码。

  • 本文向大家介绍拥有一个属于自己的javascript表单验证插件,包括了拥有一个属于自己的javascript表单验证插件的使用技巧和注意事项,需要的朋友参考一下 自己编写了一个表单验证插件,使用起来很简单,以后还可以扩展更多的功能,比如ajax验证。 每个需要验证的表单元素下面有一个span标签,这个标签的class有一个valid表示需要验证,如果有nullable则表示可为空;rule表示验

  • 在Flink中,像“平面地图”、“地图”等运算符称为任务,如果我将平面地图的并行度设置为30,那么这个任务有30个子任务。 现在,如果我只有一个插槽,它会在一个插槽中产生多个线程吗?还是每个插槽只有一个线程? Flink会在该插槽中简单地创建30个线程,还是使用类似线程池的东西? 以上不是一个恰当的例子。 假设在作业中我有操作符flatMap和map,它们都有并行度1,我只有一个插槽,这个插槽会创

  • 问题内容: 我有一个LockManager来管理多个线程的锁。有时线程是坏男孩,我必须杀死它们并要求LockManager释放所有锁。但是,由于我无法在Java中使用ReentrantLock,因此无法解锁另一个线程拥有的锁。 我被迫使用锁(不能使用信号灯,这是作业的重点)。是否有任何Java Lock实现可让我解锁其他线程拥有的锁? 到目前为止,我考虑的选项是: 以允许我执行此操作的方式重新实现

  • 我有一个LockManager管理几个线程的锁。有时线程是坏男孩,我必须杀死他们,并要求锁经理释放他们所有的锁。但是,由于我在java中使用ReentrantLock,这是不可能的,我不能解锁另一个线程拥有的锁。 我被迫使用锁(不能使用信号量,这是作业的重点)。是否有Java锁实现允许我解锁其他线程拥有的锁? 到目前为止,我考虑的选择是: null 可重入锁-从另一个线程解锁 从不拥有锁的线程中解

  • 我有一个(相当复杂的)数据类型: 现在我发现自己需要另一个数据类型…有两个构造函数。一个与的相同;另一个只存储一个。我有什么选择? 虽然这会起作用,但它也允许类似这样的东西,这是没有意义的。