每次我想要运行它时创建一个新的线程实例

时间:2015-12-04 04:44:25

标签: java android multithreading

我有一个实现runnable的类:

private class myThread implements Runnable {
    @overide
    Public void run(){
    //refreshes a page
    }
}

现在假设我有一个按钮,我想在按下时运行该线程,所以在onClick中我会:

Thread myThread = new Thread(new myThread());
myThread.start();

现在我的问题是我应该在每次单击按钮时创建该类的实例,还是应该只在应用程序运行时执行一次onClick我只做

myThread.start();

如果有人决定在线程有时间完成之前重复按刷新按钮,那么是否会导致任何问题? 每次创建新实例的优缺点是什么?

我在Android中这样做,所以我想知道这会如何影响应用程序正在做的事情。

1 个答案:

答案 0 :(得分:2)

这里别无选择。您只能为start()的每个实例调用一次Thread;如果您第二次为同一个IllegalThreadStateException对象调用start(),它将抛出Thread。为每次点击创建一个新实例。

但是,如果MyThread课程没有维护任何内部实例数据,那么您每次都不需要MyThread的新实例。您可以创建一个MyThread对象,并在每次创建新Thread时重复使用它:

Thread myThread = new Thread(mMyThread);

(其中mMyThread是存储在成员字段中并创建一次的实例。)

在我看来,最干净的方法是继承Thread而不是实施Runnable

private class MyThread extends Thread {
    @overide
    Public void run(){
        //refreshes a page
    }
}

然后你可以这样做:

new MyThread().start();

并且不必担心MyThread类是否具有需要对每个Thread实例私有的实例数据。 (这样可以使名称忠实于实际的对象类型。)