代码改变世界

线程的3种声明方式

2017-12-01 10:32  钰火  阅读(926)  评论(0编辑  收藏  举报
1.实现Runnable接口,重写run方法 
实例化线程:new Thread(new MyselfThread()).start();
 
2.继承Thread类,重写run方法,其实质也是实现Runnable接口
实例化线程:MyselfThread thread = new MyselfThread(); thread.start();
 
3.实现Callable接口,实现call()方法,该call()方法将作为线程执行体,并且有返回值,可以声明抛出异常。
使用FutureTask类来包装Callable对象,使用FutureTask的get方法获得返回值。
实例化线程:
MyselfCallable callable = new MyselfCallable();
FutureTask<Integer> futureTask = new FutureTask<>(callable);
new Thread(futureTask).start();
调用futureTask.get()获取call方法返回的结果
 
一般使用第一种方式实现线程的声明,可避免Java单继承的问题
 
测试代码的常规写法
Runnable r = new Runnable(){
    public void run() {
        while(true){
            System.out.println("test");
        }                
    }
}
Thread t = new Thread(r);
t.start();