线程的创建-三种方式

三种创建方式

一:继承Thread方式

class ThreadA extends Thread{
       @Override
       public void run(){
            System.out.println("通过 继承Thread类 方式实现 ")
       }
}

二:实现Runnable接口

class ThreadB implements Runnable{
    @Override
       public void run(){
            System.out.println("通过 实现Runnable接口 方式实现 ")
       }
}

三:实现Callable接口实现

class ThreadC implements  Callable<String>{
        @Override
        public String call() {
            System.out.println("通过 实现Callable接口 方式实现 ")
            return "success";
        }
}

调用示例

  public class ThreadTest{
      public static void main(String [] args){
        //ThreadA
        Thread t1 = new Thread(new ThreadA());
        t1.start();
        //ThreadB
        Thread t2 = new Thread(new ThreadB());
        t2.start();
        //ThreadC
        ThreadC test = new ThreadC();
        FutureTask<String> futureTask = new FutureTask<String>(test);
        Thread t3 = new Thread(futureTask);
        t3.start();
        try {
            //获取返回call方法结果
            String result = futureTask.get(1, TimeUnit.SECONDS);
            System.out.println(result);
        } catch (Exception e) {
            e.printStackTrace();
        }
    }
  }

三种创建方式比较

继承创建线程的缺陷是受java单继承的影响,如果一个线程继承了Thread类,就无法继承其他类,不利于业务逻辑处理,并且Thread类其实也是实现了Runnable接口的

Callable和Runnale的区别

1.Runnable执行方法是run(),Callable是call()
2.实现Runnable接口的任务线程无返回值;Callable接口支持返回执行结果,此时需要调用FutureTask.get(long time, TimeUnit unit)方法实现,此方法会阻塞主线程直到获取子线程执行完的结果;当不调用此方法时,主线程不会阻塞
3.call方法可以抛出异常,run方法若有异常只能在内部消化。

原创,转载请著名出处!

©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 进程和线程 进程 所有运行中的任务通常对应一个进程,当一个程序进入内存运行时,即变成一个进程.进程是处于运行过程中...
    胜浩_ae28阅读 10,537评论 0 23
  • 进程和线程 进程 所有运行中的任务通常对应一个进程,当一个程序进入内存运行时,即变成一个进程.进程是处于运行过程中...
    小徐andorid阅读 7,851评论 3 53
  •   一个任务通常就是一个程序,每个运行中的程序就是一个进程。当一个程序运行时,内部可能包含了多个顺序执行流,每个顺...
    OmaiMoon阅读 5,631评论 0 12
  • 下面是我自己收集整理的Java线程相关的面试题,可以用它来好好准备面试。 参考文档:-《Java核心技术 卷一》-...
    阿呆变Geek阅读 14,999评论 14 507
  • 看图。
    郭尔同学阅读 1,313评论 0 0