Java线程状态知识点

来源:互联网 发布:川崎机器人编程手册 编辑:程序博客网 时间:2024/05/29 10:51

Thread和Runnable实现线程的异同

相同点

  • 都是多线程实现的方式

不同点

  • Thread是类,而Runnable是接口;Thread是实现了Runnable接口的类。

  • Runnable具有更好的扩展性,即多个线程都是基于某一个Runnable对象建立的,它们会共享Runnable对象的资源。


Thread类包含的start()和Run()方法的区别

  • start():它的作用是启动一个新的线程,新线程会执行相应的Run()方法;start()不能被重复调用。

  • run():与普通的成员方法一样,可以被重复调用。单独调用会在当前线程中执行run(),而不会启动新线程。


线程状态sleep()、yield()、wait()区别

  • sleep()会给其他线程运行的机会,而不考虑其他线程的优先级,因此会给较低优先级的线程一个运行的机会;yield()只会给不小于自己优先级的线程一个运行的机会。

  • 当线程执行sleep()方法后,参数long millis指定睡眠时间,转到阻塞状态;当线程执行yield()方法后进入就绪状态。

  • sleep()方法声明抛出InterruptedException异常,而yield()方法没有声明异常。

  • sleep()比yield()方法具有更好的移植性

  • 线程调用自身的sleep()或者其他线程的join()方法,进入阻塞状态,该状态停止当前线程但不释放资源,当sleep()或者join()的线程结束以后进入就绪状态

  • Object.wait()对象锁,释放资源,notify()唤醒回到wait()前中断现场。

线程状态转换

0 0
原创粉丝点击