多线程的安全问题
问题的原因:当多条语句在操作同一个线程共享数据时,一个线程对多条语句只执行了一部分,没有执行完,另一个线程参与其中,导致数据共享的错误。
解决办法:对多条操作共享数据的语句,只能让一个线程单独执行完,在执行过程中,其他线程不可以参与。
java对多线程的安全问题提供了专业的解决方式:同步代码块和同步函数。
synchronized(对象)
{
需要被同步的代码
}
同步的前提:
1.必须要有两个或两个以上的线程。
2.必须是多个线程使用同一个锁。
同步的好处:解决了多线程的安全问题。
同步的弊端:多个线程需要判断锁,较为消耗资源。 |
|