面试题
1.什么是多线程安全?
当多个线程同时共享数据时候,同一个全局变量或者静态变量,在做写操作的时候,会出现数据冲突问题,也就是线程安全问题。做读的时候是不会发生数据冲突的。
2.如何解决多线程之间的线程安全问题?
使用sync同步或者使用lock锁
3.为什么使用线程sync同步或者使用锁可以解决线程安全问题?
发生冲突数据问题(线程不安全) 只能让当前一个线程执行,执行完成后释放锁,然后才能让其他的线程执行,这样可以解决线程不安全问题
4.什么是线程之间的同步?
当多个线程共享一个资源时候,不会受到其他的线程干扰
5.什么是同步代码块?
例子
synchronized(同一个数据){
可能会发生线程冲突问题
}
说白了就是说将 可能发生安全问题的代码 用sync给包括起来
同步的分类 : 同步函数 和静态同步函数 public staticsync
6.同步代码块和同步函数区别
同步代码块使用的 自定义锁(明锁)
同步函数使用的是 this锁
7.同步函数与静态同步函数区别?
注意:有些面试会这样问:例如现在一个静态方法和一个非静态静态怎么实现同步?
答:
同步函数使用this锁
静态同步函数使用字节码文件,也就是类.class
8.什么是线程死锁
同步中嵌套同步,导致锁无法释放
解决方法:尽量不要同步中嵌套同步