承Thread类
4.线程的高度是指在单个CPU上以某种顺序运行多个线程
5.多个线程并发执行时,各个线程中语句的执行顺序是确定的,但是线程之间的相对执行顺序是不确定的
6.Java中的对象锁是一种独占的排他锁
7.程序中可能出现一种情况:多个纯种互相等待对方持有的锁,而在得到对方的锁之前都不会释放自己的锁,这就是死锁.
8. notyfyAll() 方法将对象wait pool中的所有纯种都移到lock pool中。
9.在一个线程中,建议使用标志,而不使用stop() 方法终止另一个线程。
10.Java线程组把一组线程看做一个对象进行统一处理。
11.进程是一个内核级的实体,而线程是一个用户级的实体
12.在Java线程模型中的数据和代码构成了线程体。
13.线程的优先级是在Thread类的常数MIN_PRIORITY 和MAX_PRIORITY
之间的一个值
14.Java的线程高度策略是基于优先级的抢占式调度。
15.处于新建状态的线程可以使用的控制方法是start() 和stop() 。
16.一个进程可以包含多个线程
17.多任务操作系统运行多个进程来并发地执行多个任务
18.线程是由表示程序运行状态的寄存器组成的
19.多线程允许单个程序创建多个并行执行的线程来完成多个子任务
20.Thread类中表示最高优先级的常量是getPriority() ,而表示最低优先级的常量是setPriority(0 .
三.简答题
1. 简述 synchronized 和 java.util.concurrent.locks.Lock 的异同?
答:主要相同点: Lock能完成synchronized所实现的所有功能
主要不同点:Lock有比synchronized更精确的线程语义和更好的性能。synchronized会自动释放锁,而Lock一定要求程序员手工释放,并且必须在finally从句中释放。
2.理解几个概念对象锁、sleep、wait、notify、notifyAll
对象锁:每个对象都有对象锁,当某个线程进入用synchronized定义方法时,就获得了当前类对象(方法所属的类的对象)的锁,其他线程就不能再获得该锁,直到线程释放该锁。一个类对象有一个对象锁,多个同步方法公用一个对象锁。
sleep:是当前线程处于休眠状态,将对cpu的控制权交给其他线程,但不释放当前对象的锁,其他线程可以获得cpu,但不能进入当前线程控制的对象锁。
wait:与sleep的区别是,它会释放对象锁,其他线程可以进入该同步块。
notify:进入当前同步块的线程调用wait方法变成休眠状态的线程,notify将该线程变成等待状态。