为了账号安全,请及时绑定邮箱和手机立即绑定

细说多线程之Thread VS Runnable

难度初级
时长 1小时 0分
学习人数
综合评分9.63
171人评价 查看评价
9.8 内容实用
9.6 简洁易懂
9.5 逻辑清晰
  • 111111111111

    查看全部
  • Runnable的优势

    查看全部
  • JAVA线程有两类

    用户线程;守护线程

    守护线程:运行在后台,为其他前台线程服务

    特点:一旦所有的用户线程都结束运行,守护先会随JVM一起结束工作

    最常见的守护线程:垃圾回收线程

    应用:数据库连接池中的监测线程

                JVM虚拟机启动后的监测线程


    Thread 类的 setDaemon方法设置为true设置守护线程

    setDaemon必须在start()方法前调用

    守护线程中产生的新线程也是守护线程

    不是所有的任务都可以分配给守护线程来执行,比如读写操作或者计算逻辑;

    查看全部
  • Thread thread = new Thread(daemonThread);

    thread.setDaemon(true);//设置线程为守护线程



    查看全部
  • 线程的生命周期

    查看全部
  • 线程生命周期之阻塞状态,阻塞状态被解除后,又会进入就绪状态等待获取cpu

    查看全部
  • 线程生命周期之运行状态

    查看全部
  • 线程生命周期之就绪状态

    查看全部
  • 两种方式比较

    查看全部
    0 采集 收起 来源:应用揭秘

    2020-02-09

  • 两种线程的创建方式


    查看全部
  • jstack

    作用:生成JVM当前时刻线程的快照(threaddump,即当前进程中所有线程的信息)

    目的:帮助定位程序问题出现的原因,如长时间停顿、CPU占用率过高等

    查看全部
  • Java线程有两类

    用户线程:运行在前台,执行具体的任务

    程序的主线程、连接网络的子线程等都是用户线程

    守护线程:运行在后台,为其他前台线程服务

    特点:一旦所有用户线程都结束运行,守护线程会随JVM一起结束工作

    应用:数据库连接池中的监测线程 

              JVM虚拟机启动后的监测线程

    最常见的守护线程:垃圾回收线程

    可以通过调用Thread类的setDaemon(true)方法来设当前线程为守护线程

    注意:setDaemon(true)方法必须在start()方法之前调用,否则会抛出IllegalThreadStateException异常

    在守护线程中产生的新线程也是守护线程

    不是所有的任务都可以分配给守护线程来执行,比如读写操作或者计算逻辑

    查看全部
  • 线程的生命周期

    创建:创建一个Thread对象

    就绪:创建了线程对象后,调用了线程的start()方法(注意:此时线程只是进入了线程队列,等待获取CPU服务,具备了运行的条件,但并不一定已经开始运行了)

    运行:处于就绪状态的线程,一旦获取了CPU资源,便进入到运行状态,开始执行run()方法里面的逻辑

    终止:线程的run()方法执行完毕,或者线程调用了stop()方法,线程便进入了终止状态。

    阻塞:一个正在执行的线程在某些情况下,由于某种原因而暂时让出了CPU,暂停自己的执行,便进入了阻塞状态。如调用sleep()、join()、wait()方法

    线程从阻塞状态解除后重新进入就绪状态。

    http://img1.sycdn.imooc.com//5dd4fe470001ead409580384.jpg

    查看全部
  • 使用同一个Runnable实现类对象,创建线程可以实现线程之间的资源共享

    http://img1.sycdn.imooc.com//5dd4f43d00018b0c04170391.jpg

    线程执行时机不能确定,线程start()之后不一定能立即获得CPU时间片,获得CPU资源后也会被其他线程抢占CPU资源,导致每次执行结果不同。

    查看全部
  • Thread和Runnable两种方式比较

    Runnable方式可以避免Thread方式由于Java单继承特性带来的缺陷

    Runnable的代码可以被多个线程(Thread实例)共享,适合于多个线程处理同一资源的情况

    查看全部

举报

0/150
提交
取消
课程须知
学习本课程前,你需要熟练掌握Java的基础语法,熟悉Java中创建线程的两种方式,熟悉Java多线程中常用的一些方法。
老师告诉你能学到什么?
1、多线程创建方式的比较和选择 2、线程的生命周期、守护线程

微信扫码,参与3人拼团

意见反馈 帮助中心 APP下载
官方微信
友情提示:

您好,此课程属于迁移课程,您已购买该课程,无需重复购买,感谢您对慕课网的支持!