首页 > 编程语言 > 详细

java多线程实现的三种方式

时间:2021-02-06 23:45:58      阅读:33      评论:0      收藏:0      [点我收藏+]

      1.第一种方式:继承Thread类,重写run方法 :(这种方法不是很建议使用因为java只支持单继承)。

      

public class Time extends Thread {
//重写run方法
    public void run(){
        
    }
    public static void main(String[] args) {、
//运行线程 不能直接调用run不然就是方法
        new Time().start();    
    }
}

 

    2:第二种方式:实现实现Runable接口,重写run方法:

    

public class Time implements Runnable {
    @Override
    public void run() {
        System.out.println("12345");
    }
    public static void main(String[] args) {
       var Time= new Time();
        new Thread(Time,"定义线程的名字").start();
    }
}

    

    3:第三种方式:实现Callable接口要实现call方法:

      

public class Time  implements Callable {
    //重写call方法
    @Override
    public Object call() throws Exception {
        System.out.println("我是实现多线程的第三种方式");
        return null;
    }
    public static void main(String[] args) {
        Callable a=new Time();
        //利用FutureTask用来包装一个 Callable 因为这个类实现了Runnable方法
        FutureTask i=new FutureTask(a);
        Thread t=new Thread(i);
        t.start();
    }
}

    最后总结:Thread和Runable都是重写了run方法;但java只支持但继承 所以继承Thread类就不能继承其他类了。

         但Runable很好的解决了这个问题因为java中接口支持多继承。这两个都是没有返回值的。

         Callable接口的实现是将call方法实现然后把Callable封装成FutureTask(这个类可以判断线程执行完毕还是取消执行)

         这三种方式都是通过Thread的start()方法开启。

         这三种方式都可以说本质上都是Runable实现因为 

         1:Thread实现了Runable;

         2:Callable是通过封装成FuntureTask,FutureTask 可以用来包装一个 Callable 或是一个runnable对象。

           因为FurtureTask实现了Runnable方法。

        所以可以说本质是由Runable实现;

         

         

 

java多线程实现的三种方式

原文:https://www.cnblogs.com/yunjie0930/p/14383060.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!