1.线程的五种状态
创建 就绪 运行 阻塞 死亡
2.创建线程的两种方式
继承Thread类 重写run方法
实现Runnable接口 重写run方法
3.调用start和调用run方法的区别
调用start方法表示会开启新的线程
run方法不会开启新的线程
4.线程调度常用的方法
sleep()
join()
yield()
5.进程和线程的区别
进程是进行中的应用程序 属于CPU分配资源的最小单位
线程是CPU执行运算的最小单位 包含在进程之中
6.礼让和插队有什么区别
礼让只是提供一种可能 不一定会礼让
插队一定会插队
7.同步的关键字是什么,可以修饰哪些内容,同步的作用
是什么?
synchronized 修饰代码块 或者 方法 分别表示同时只能有一个线程执行代码块 或者
方法
8.我们之前接触过哪些线程安全的类,底层如何实现线程
安全?
StringBuffer Vector Hashtable 使用synchronized同步关键字修饰方法
9.sleep和wait的区别?
sleep属于Thread类的静态方法 不会释放锁
wait属于Object类的实例方法 会释放锁
10.final,finally,finalize的区别?
final属于Java关键字 用于修饰属性 方法 类
finally属于Java关键字 用于异常处理 表示任何情况都执行的代码
finalize属于Object类的实例方法 表示当前对象被回收将自动调用此方法
10.notify和notifyAll的区别?
notify表示随机唤醒单个线程
notifyAll唤醒所有线程