- 什么是多线程
关键考点:
a) 线程的概念。
b) 多线程的概念。
c) 多线程并发的含义。
答案:
线程是进程中的一个执行单元,又称为轻量级进程,它和进程一样拥有独立的执行控制,由操作系统负责调度。
而多线程是这样的一种机制:它允许在程序中并发执行多个指令流,每个指令流都称为一个线程。多线程进制下的线程彼此之间互相独立,比较容易共享数据,通过并发执行的方式提高程序的效率和性能。
- 解释进程和线程的区别
关键靠点:
a) 进程的概念
b) 线程的概念。
c) 进程和线程的区别。
答案:
进程和线程之间的区别主要包括:
- 线程的划分尺度小于进程,线程隶属于某个线程。
- 进程是程序的一种动态形式,是CPU、内存等资源占用的基本单位,而线程是不能独立的占有这些资源的。
- 进程之间相互独立,通信比较困难,而线程之间共享一块内存区域,通信比较方便。
- 进程在执行过程中,包含比较固定的入口、执行顺序和出口,而线程的这些过程会被应用程序所控制。
- 如何让一个类称为线程类
关键考点:
a) Runnable接口。
b) Thread类。
答案:
让一个类成为线程类的方式有两种,一个是实现Runnable接口,另一个就是继承Thread类。
- 解释Runnable接口与Thread类的区别
关键考点:
a) Runnable接口
b) Thread类。
c) 接口与类的区别。
答案:
Runnable接口与Thread类的区别主要包括以下几个方面:
- 线程类继承Thread则不能继承其他类,而Runnable接口可以。
- 线程类继承Thread相对于Runnable来说,使用线程的方法更方便一些。
- 实现Runnable接口的线程类的多个线程,可以更方便的访问同一变量,而Thread类则需要内部类来进行替代。
- 如何启动一个线程
关键考点:
a) Thread类的start()方法。
答案:
继承Thread类的线程类,可以通过new关键创建一个线程对象以后,执行start()方法开始一个线程。而实现了Runnable接口的线程类,需要用它的对象实例,作为Thread类构造方法的参数,创建一个Thread对象,然后调用start()方法开始一个线程。
- 如何用sychronized来让线程同步。
关键考点:
- 线程安全的构成原因。
- Sychronized的使用方法。
答案:
Sychronized关键字代表要为某一段代码加上一个同步锁,这样的锁是绑定在某一个对象上边的。如果是同步代码块,需要为该sychronized关键字提供一个对象的引用。如果是同步方法,只需要加一个sychronized关键字的修饰。
Synchronized为某段代码加上锁以后,某个线程进入该段代码之前,首先需要检查该锁是否被占用,如果没有被占用则继续执行,如果已经被占用,则需要等到该锁被释放以后才能继续执行。其中,线程执行完该段代码就是释放锁的标志。
- 编写一个生产者与消费者模型的多线程例子程序
关键考点:
- 线程状态的转变过程。
- Wait()和notify()的使用方法。
答案:
后续加上……
- 如何使用Java的线程池
关键考点:
线程池的概念。
Java关于线程池的API使用方法。
答案:
Java提供了java.util.concurrent.ThreadPoolExecutor类来使用线程池,通过它构造的对象,可以很容易地管理线程,并把线程代码与业务代码进行分离。