线程同步关键字synchronized :(←很长很难记)
synchronized 就字面上的意思是同步。
java支持多线程,具有并发功能,从而大大提高 了计算机的处理能力,在各线程之间不存在共享资源的情况下,几个线程的 执行的顺序可以是随机的。
但是,当两个或者两个以上的线程需要共享同一资源时,线程之间的执行顺序就需要协调,否则多线程的运行导致共享资源出现错误,出现安全问题!!
所以对于多个线程操作同一资源的语句,只让一个线程执行完,在执行过程中,其他线程不可以参与执行。
java对于多线程安全问题提供了专业的解决方法:synchronized同步代码块
synchronized(对象)
{
需要同步的代码;
}
可以形象的把上面的同步代码块看作一个厕所,多个人(线程)需要上厕所,然而一个人(线程)在上厕所,TA在里面必须是上锁,处理完之后再解锁离开。
使用同步关键字synchronized 的前提
1.必须有两个或者多个线程。
2.必须多个线程使用同一个资源。
同步的好处:
解决了多线程的安全问题。
弊端:
多个线程需要判断锁,较为消耗资源。