`

java编程思想--runnable 与thread

 
阅读更多

java编程思想--runnable 与thread 

1 继承thread 

  

public class SimpleThread extends Thread {
    private int countDown = 5;

    public SimpleThread() {
        start();
    }

    public String toString() {
        return Thread.currentThread().getName() + ":" + countDown;
    }

    public void run() {
        while (true) {
            System.out.println(this);
            if (--countDown == 0) {
                return;
            }
        }
    }

    public static void main(String[] args) {
        for (int i = 0; i < 5; i++) {
            new SimpleThread();
        }
    }
}

 2.实现runnable

   

public class SelfManage implements Runnable {

    private Thread t = new Thread(this);
    private int countDown = 5;

    public SelfManage() {
        t.start();
    }

    @Override
    public void run() {
        while (true) {
            System.out.println(this);
            if (--countDown == 0) {
                return;
            }
        }
    }

    public static void main(String[] args) {
        for (int i = 0; i < 5; i++) {
            new SelfManage();
        }
    }

}

 

总结:二者实现起来差不多,但继承thread只能继承一个,实现runnable可以实现多个,

start() 都在构造器中调用,在构造器中调用start()可能是安全的,但也有可能线程已调度,而构造还没有初使化完全,所以可能会出现不稳定状态,因此,不推荐先初使化Thread对象,而采用executor调度

分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics