java面试之多线程

1.threadLocal知识点
线程局部变量或者叫线程本地变量,是为变量在每个线程中创建了一个副本,只有当前线程能访问,其他线程不能访问和修改。源码使用threadlocalmap,当前线程currentThread当做键,对象为值存放。解决数据隔离问题。使用场景登陆的时候保存用户信息。
2.synchronized和lock
一个是关键字,一个是接口
1) synchronized在发生异常时,会自动释放线程占有的锁,因此不会导致死锁现象发生;而Lock在发生异常时,如果没有主动通过unLock()去释放锁,则很可能造成死锁现象,因此使用Lock时需要在finally块中释放锁;
2)Lock可以让等待锁的线程响应中断,而synchronized却不行,使用synchronized时,等待的线程会一直等待下去,不能够响应中断;
3)通过Lock可以知道有没有成功获取锁,而synchronized却无法办到。
3.多线程的实现方式
1.继承thread,实现Runnable接口,实现Callable接口有返回值

lock参考:https://juejin.im/post/5a43ad786fb9a0450909cb5f

猜你喜欢

转载自blog.csdn.net/weixin_42406803/article/details/88423825