synchronized 块
ynchronized 关键字,代表这个方法加锁,相当于不管哪一个线程(例如线程A),运行到这个方法时,都要检查有没有其它线程B(或者C、 D等)正在用这个方法,有的话要等正在使用synchronized方法的线程B(或者C 、D)运行完这个方法后再运行此线程A,没有的话,直接运行。
通过 synchronized关键字来声明synchronized 块。语法如下:
synchronized(syncObject) {
//允许访问控制的代码
}
synchronized 块是这样一个代码块,其中的代码必须获得对象 syncObject (可以是类实例或类)的锁方能执行。
在多线程程序的其他部分可能会发生与这个synchronized 代码块同步的代码,这个时候加synchronized() 锁中的对象可以使同一个对象,就可以解决同步带来的问题
你的代码没有synchronized 锁,所以在运行的时候会发生同步的问题,即多个线程同时执行,在不同的情况下会获得不同的结果。加上synchronized 锁后可以安全。
|