博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Java 实现多线程Thread Runnable Callable 三种方式
阅读量:6681 次
发布时间:2019-06-25

本文共 3125 字,大约阅读时间需要 10 分钟。

Java 多线程

Thread Runnable  Callable 三种方式区别

1.Thread创建多线程特点

因为继承Thread类,所有无法再继承其他类了。

2.Runnable 和Callable创建多线程特点

因为线程只实现Runable 或Callable接口,可以继续继承或实现其他类。

Callable有执行返回值,而Runable 和Thread 无返回值

1. 继承Thread重写 run方法。

 

public class DemoApplication {    public static void main(String[] args) {        SpringApplication.run(DemoApplication.class, args);        //1.继承 Thread 重写 run方法        Thread runThread = new Thread(){            @Override            public void run(){                System.out.println(Thread.currentThread().getName()                        +"@@@@@@@@@继承 Thread 重写 run方法@@@@@@@@@@@@");            }        };        runThread.start();        //1.继承 Thread 重写 run方法        new Thread1().start();    }}//继承 Thread 重写 run方法class Thread1 extends Thread{    @Override    public void run(){        System.out.println(Thread.currentThread().getName()                +"@@@@@@@@@继承 Thread 重写 run方法@@@@@@@@@@@@");    }}

 

执行结果:

Thread-11@@@@@@@@@继承 Thread 重写 run方法@@@@@@@@@@@@Thread-12@@@@@@@@@继承 Thread 重写 run方法@@@@@@@@@@@@

 

2.实现Runnable的run方法。

public class DemoApplication {    public static void main(String[] args) {        SpringApplication.run(DemoApplication.class, args);        //2.实现Runnable 实现 run 方法        Thread runnableThread = new Thread(new Runnable() {            @Override            public void run() {                System.out.println(Thread.currentThread().getName()                                +"##########继承 Thread 重写 run方法############");            }        });        runnableThread.start();        //2.实现Runnable 实现 run 方法        new Thread(new Thread2()).start();    }}//实现Runnable 实现 run 方法class Thread2 implements Runnable{    @Override    public void run(){        System.out.println(Thread.currentThread().getName()                +"##########继承 Thread 重写 run方法############");    }}

执行结果:

Thread-11##########继承 Thread 重写 run方法############Thread-12##########继承 Thread 重写 run方法############

3.实现Callable的call方法。

 

public class DemoApplication {    public static void main(String[] args) {        SpringApplication.run(DemoApplication.class, args);        //3.实现Callable call方法        FutureTask
futureTask = new FutureTask<>(new Callable
() { @Override public String call() throws Exception { System.out.println(Thread.currentThread().getName() +"$$$$$$$$$$$实现Callable call方法$$$$$$$$$$$$$$"); return null; } }); new Thread(futureTask).start(); //3.实现Callable call方法 FutureTask
futureTaskCallable = new FutureTask<>(new Callable1()); new Thread(futureTaskCallable).start(); }}//实现Callable call方法class Callable1 implements Callable
{ @Override public String call(){ System.out.println(Thread.currentThread().getName() +"$$$$$$$$$$$实现Callable call方法$$$$$$$$$$$$$$"); return null; }}

 

执行结果:

Thread-10$$$$$$$$$$$实现Callable call方法$$$$$$$$$$$$$$Thread-11$$$$$$$$$$$实现Callable call方法$$$$$$$$$$$$$$

 

转载于:https://www.cnblogs.com/934827624-qq-com/p/9963918.html

你可能感兴趣的文章
RHEL7.1配置本地yum源
查看>>
Mybatis Generator最完整配置详解
查看>>
Hash学习
查看>>
PHP按符号截取字符串的指定部分
查看>>
在Blender导出格式为STL
查看>>
我的友情链接
查看>>
酒有两不喝,财有两不发,忙有三不帮,亲有三不走!
查看>>
IPFS 服务的Python访问
查看>>
DllMain详解
查看>>
Class bytes found but defineClass()failed for error when deploying EAR
查看>>
IIS7.0安装的FTP建账号
查看>>
spring --理解
查看>>
前台中文数据后台achieveRequest().getParameter获取乱码问题
查看>>
sed工具扩展学习
查看>>
vim与sed结合使用
查看>>
linux系统基础服务解析
查看>>
WLC中DCA选项
查看>>
18.程序逻辑问题
查看>>
字符子串
查看>>
db4o 参考资料
查看>>