前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >带你搞懂Java多线程(二)

带你搞懂Java多线程(二)

作者头像
longzeqiu
发布2020-02-10 12:01:26
3130
发布2020-02-10 12:01:26
举报
文章被收录于专栏:Android小知识Android小知识

Java里的线程

  • Java里的程序天生就是多线程的

启动线程的方式

  • ①扩展Thread类覆盖run方法并用扩展类执行run方法
  • ②把实现Runnable接口的类的实例实例交给线程执行
  • ③把实现Callable接口的类的实例交给线程执行

注意:1和2中的run方法是没有返回值的,如果需要返回值则使用3,但3不能直接放到Thread的构造中,需要用FutureTask包装后才可放入,拿到返回值需使用FutureTask的get方法。

Runnable和Callable是对任务的抽象,只有Thread是对线程的抽象。

安全中断线程的方式

  • interrupt:用来中断线程。
  • interrupted:静态方法返回Boolean值,用来判断线程是否被终断了,且可将标志位由true改变为false
  • isInterrupted:是否被中断了。
  • 为什么推荐用interrupt去中断线程
    • interrupt是协作式的不是抢占式的,线程的使用者回去判断是否中断,而不是立即中断。

不要用stop、suspend(挂起)和resume

  • 好了有人可能会问为什么不要用,原因如下:
    • stop方法会立即杀死线程,不管线程所调用的资源是否释放。
    • suspend方法将线程挂起的时候也不会释放资源,如果被挂起前这个线程拿到了锁,那么这个线程将带着锁被挂起,容易造成死锁。

深入理解start()和run()

  • run()是普通的成员方法,是业务逻辑实现的地方。
  • start()真正和线程挂钩,表示真正启动了一个线程。

其他方法

  • join()把指定的线程加入当前线程内。 *yield()当前线程让出CPU的执行权。

线程的一生

本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • Java里的线程
    • 启动线程的方式
    • 注意:1和2中的run方法是没有返回值的,如果需要返回值则使用3,但3不能直接放到Thread的构造中,需要用FutureTask包装后才可放入,拿到返回值需使用FutureTask的get方法。
      • 安全中断线程的方式
        • 深入理解start()和run()
        • 其他方法
    • 不要用stop、suspend(挂起)和resume
    领券
    问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档