启动线程的四种方法

方式一
1自定义类继承Thread类,覆写run方法(线程任务)2实例化自定义类对象,该对象就是一个具备线程执行的对象3线程类的对象run方法直接调用和普通类的对象调用没有区别,启动线程一律使用Thread类提供的start()方法
* 直接调用run方法,实际还是同步执行,与线程无关

javamyThread1.run();

*调用start方法,才会异步执行,跟线程有关,该方法不能多次调用,只能执行一否则会抛出异常(非受查异常:IllegalThreadStateException)
myThread1.start();
(native修饰的方法成为本地方法,需依赖平台实现JNI)
方式二(代理模式)
业务无返回结果
2·1自定义类继承Runnable接口,覆写run方法
2·2实例化Thread类对象,通过构造方法传入Runnable接口实现
2·3线程的启动方式start

MyThread mt1 = new MyThread("子线程1");
Thread thread1 = new Thread(mt1);
thread1.start();

(Java中Thread类本身也实现了Runnable接口,与用户自定义的线程类共同组成代理模式。其中Thread类实现辅助操作,包括现成的资源调度等任务,而自定义线程类完成真实业务)

方式三
业务有返回结果
V call()throws Exception 线程执行后有返回结果
3·1自定义类继承java.util.concurrent.Callable接口,实现覆写call方法
3·2Future:接收Callable接口的返回值 V get();
FutureTask 包装Callable接口实现类的对象
3·3实例化Thread类对象,通过构造方法传入Runnable接口实现
3·4线程的启动方式start
3·5通过FutureTask对象的get(阻塞作用)
FutureTask:获取结果(将来的任务)
方式四
通过线程池的方式使用线程

  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值