java 线程

来源:互联网 发布:containsall java 编辑:程序博客网 时间:2024/06/18 16:50

线程

线程启动

Thread thread = new Thread();thread.start();//启动
  • new Tread()仅仅是在JVM中构建了线程对象
  • start() 这个方法将调用本地方法(JNI)来实现一个真正意义上的线程,此时会在OS级别进行线程的真正创建
  • run()方法定义了线程的逻辑

线程状态

  • NEW :线程在没有进行start之前,本质上还不是一个线程,仅仅是JVM中外壳对象
  • Runnable:线程发生start之后的状态,也可以理解为存活的正在尝试征用CPU的线程,从Java本身层面上讲,这个状态并不代表一定处于运行状态的线程
  • BLOCKED:处于阻塞状态,或者线程已经被挂起
  • WAITING:线程拥有对象锁之后进入到相应的代码区域后,调用相应的对象wait方法后产生的结果
  • TIMED_WAITING:当调用Thread.sleep的方法时,相当于使用某个时间资源作为锁对象,进而达到等待的目的
  • TERMINATED:线程刚刚运行完,即执行完用户逻辑

线程实现

  • extend Thread
  • implements Runnable
  • implements Callable
实现特点
  • 对于继承和实现的利弊:关注于java单继承体系问题
  • Runnable 和Callable特点
    • Runnable实现run(),Callable实现call()
    • run中不可以抛出异常,在使用不当时,可能造成定时任务卡死(Timer实现的情况下);call方法可以抛出异常,并且具有返回值
    • Callable和Runnable都可以应用于executors。而Thread类只支持Runnable
    • Callable适用于异步的数据获取

线程终止

  • stop :比较粗暴,无论线程执行到哪里,它将会立即停止掉线程。当线程处于RUNNABLE状态时,使用stop方法,Thread将会抛出java.lang.ThreadDeath 的ERROR
  • interrupt :调用线程对象的interrupt方法并不一定就中断了正在运行的线程,它只是要求线程自己在合适的时机中断自己。
0 0
原创粉丝点击