1.试讲述进程与线程之间的关系。
进程是程序的一次动态执行过程,它对应了从代码加载、执行到执行完毕的一个完整过程。而线程是比进程更小的单位。一个进程在其执行过程中,可以产生多个线程,形成多个执行流。
2.Java中线程的模型由几部分构成?
由三部分构成,分别是一个虚拟的CPU、改CPU执行的代码、代码所操作的数据。
3.创建线程的两种方式是什么?
一是通过继承Thread类创建线程,二是通过实现Runnable接口创建线程。采用Runnable方法更好共享数据。
4.什么是线程调度?Java的线程调度策略是什么?
Java中的线程是有优先级的,有三个关于线程优先级的静态常量:MIN-PRIORITY、NORM-PRIORITY、MAX-PRIORITY数值分别为1,5,10;数值越大优先级越高。Java的调度策略是一种基于优先级的抢先式调度,JVM先运行高优先级池中的线程,高优先级等待池空,才考虑低优先级。
5.线程的生命周期中包含几个状态?各状态之间是如何进行转换的?
由新建状态、可运行状态、运行状态、阻塞状态、终止状态五部分组成。对线程调用各种控制方法,就使线程从一种状态转换为另一种状态。
6.Java中采用什么机制实现多线程的同步?
采用synchronized(someObject){ }语句指定的对象设置一个锁来实现多线程的同步,当一个线程获得了对象的锁后,便拥有了该对象的操作权,其他线程不能对该对象进行任何操作。如果程序中多个线程互相等待对方持有的锁,而在得到对方的锁之前都不会释放自己的锁,由此导致的线程不能继续运行,这就是死锁问题。Java没有检测与避免死锁的专门机制,一般做法是从全局考虑定义一个获得锁的顺序,并且在整个过程中都准守这个顺序。释放锁时,要按加锁的反序释放。
7.线程创建后如何启动?下列那些方法是Thread类的静态方法?哪些方法在Java2中已经不建议使用?
以采用继承Thread类为例
- 定义 Thread 类的子类,并重写该类的 run() 方法,该 run() 方法的方法体就代表了线程需要完成的任务。因此把 run() 方法称为线程执行体。
- 创建 Thread 子类的实例,即创建了线程对象。
- 调用线程对象的 start() 方法来启动该线程。
sleep()、yield()、suspend()、resume()、stop()不建议使用
本文讲述了进程与线程的关系,介绍了Java中线程的模型及创建方式,并解释了线程调度策略、生命周期及其状态转换等内容。
853

被折叠的 条评论
为什么被折叠?



