问题:
1.进程和线程的区别?资源-CPU
2.run和start的区别?native源码
3.Thread类和Runnable接口的区别?
4.如何给run()方法传参?三个方法
5.如何处理线程的返回值?Callable接口:FutureTask 或者 线程池(优点)
6.线程的6个状态?
7.sleep() 和 wait() 方法的区别:类不一样 使用的代码位置不一样 释放锁
8.notify和notifyAll的区别?锁池EntryList和等待池WaitSet
9.yield()?暗示线程调度器自己可以让出cpu
10.interrupt()?stop() suspend() resume()方法为何被废弃?
11.Synchronized类锁 对象锁?获取类锁的方式 .class static
12.Synchronized的低层实现原理?
13.自旋锁(不让CPU 等待锁 PreBlockSpin设置自选次数)和自适应自旋锁(自旋次数不固定)?
14.锁消除?不可能被共享的资源,自动消除锁
15.锁粗化?
16.Synchronized四种状态?无锁 偏向锁 轻量级锁 重量级锁
17.偏向锁?Mark word结构变更
18.ReentrantLock?
19.可重入原理?
20.公平锁和非公平锁(Synchronized)?慎用
21.wait()和await()?
22.CAS?