gzyueqian
13352868059

粤嵌Java培训解答Java多线程相关疑问

更新时间: 2018-09-04 15:28:34来源: Java培训浏览量:3908

  我们在Java入门的时候,需要了解Java的基础知识,其中就包含多线程的部分。对于这个知识点,就由粤嵌Java培训解答Java多线程相关疑问:

  一、进程和线程的区别是什么?

  进程是执行着的应用程序,而线程是进程内部的一个执行序列。一个进程可以有多个线程。线程又叫做轻量级进程。

  二、创建线程有几种不同的方式?你喜欢哪一种?为什么?

  有三种方式可以用来创建线程:

  继承Thread类;

  实现Runnable接口;

  应用程序可以使用Executor框架来创建线程池;

  实现Runnable接口这种方式更受欢迎,因为这不需要继承Thread类。在应用设计中已经继承了别的对象的情况下,这需要多继承(而Java不支持多继承),只能实现接口。同时,线程池也是非常高效的,很容易实现和使用。

  三、概括的解释下线程的几种可用状态。

  1、新建( new ):新创建了一个线程对象。

  2、可运行( runnable ):线程对象创建后,其他线程(比如 main 线程)调用了该对象 的 start ()方法。该状态的线程位于可运行线程池中,等待被线程调度选中,获 取 cpu 的使用权 。

  3、运行( running ):可运行状态( runnable )的线程获得了 cpu 时间片( timeslice ) ,执行程序代码。

  4、阻塞( block ):阻塞状态是指线程因为某种原因放弃了 cpu 使用权,也即让出了 cpu timeslice ,暂时停止运行。直到线程进入可运行( runnable )状态,才有 机会再次获得 cpu timeslice 转到运行( running )状态。阻塞的情况分三种:

  (一)等待阻塞:运行( running )的线程执行 o . wait ()方法, JVM 会把该线程放 入等待队列( waitting queue )中。

  (二)同步阻塞:运行( running )的线程在获取对象的同步锁时,若该同步锁 被别的线程占用,则 JVM 会把该线程放入锁池( lock pool )中。

  (三)其他阻塞: 运行( running )的线程执行 Thread . sleep ( long ms )或 t . join ()方法,或者发出了 I / O 请求时, JVM 会把该线程置为阻塞状态。 当 sleep ()状态超时、 join ()等待线程终止或者超时、或者 I / O 处理完毕时,线程重新转入可运行( runnable )状态。

  5、死亡( dead ):线程 run ()、 main () 方法执行结束,或者因异常退出了 run ()方法,则该线程结束生命周期。死亡的线程不可再次复生。

  懂得了什么是Java多线程,对后续的学习都会有很大的帮助。Java培训不是说仅仅懂得一些定义即可,还需要深入去理解、去编写代码才能够有所提高。如还有疑问,欢迎咨询粤嵌官网。




免费预约试听课