什么是线程安全问题?
答:当多个线程访问同一个全局变量,做写的时候可能会受到其他线程的干扰。这种现象叫做线程安全问题,读取的时候不会产生此类现象。
如何保证数据安全?
答:1.使用synchroized同步数据 //自动锁
2.使用lock同步数据,在jdk-1.5并发包中//手动锁,需要手动解锁
问:为什么使用线程同步或使用锁能解决线程安全问题呢?
答:将可能会发生数据冲突问题(线程不安全问题),只能让当前一个线程进行执行。代码执行完成后释放锁,然后才能让其他线程进行执行。这样的话就可以解决线程不安全问题。
问:什么是多线程之间同步?
答:当多个线程共享同一个资源,不会受到其他线程的干扰。
持有锁的线程可以在同步中执行
没持有锁的线程即使获取CPU的执行权,也进不去
同步的前提:
1,必须要有两个或者两个以上的线程
2,必须是多个线程使用同一个锁
必须保证同步中只能有一个线程在运行
好处:解决了多线程的安全问题
弊端:多个线程需要判断锁,较为消耗资源、抢锁的资源。
同步函数有哪些种?
非静态同步函数(使用this),静态同步函数(不是使用this,使用的是字节码文件)
线程出现死锁的原因:线程之间一直没有释放锁导致所占用,同步中嵌套同步会导致死锁
java内存模型:主内存(jvm),本地私有内存(线程内存)