3:
5:实现runnable 接口
- 继承Thread类
- 子类继承Thread具备多线程的能力
- 启动线程:子类对象.start()
- 不建议使用,避免OOP单继承的局限性
- 实现Runnable接口
- 实现接口runnable具有多线程能力
- 传入目标对象+thread.start()
- 推荐使用:避免单继承的局限性,灵活方便,让同一个对象被多个线程使用
7:实现callable接口
- 开启服务,实现call 接口
- 提交线程执行
- 使用代理,得到返回值
9:静态代理
- 两个都实现同一个接口
21:copyonwritearraylist
22:死锁
23:显示锁
- lock是显示的锁,需要手动的开启和关闭,而synchronized是隐式的锁。除了作用域就自动的释放掉
- lock只有代码块锁,而synonym有代码块和方法锁
- lock锁,jvm花较少的时间来调度线程,性能更好,并且有更好的扩展性
- 优先使用顺序
- lock > 同步代码块 > 同步方法