针对线程的安全性问题,我们需要使用同步(就是要加锁,共享资源只能一个人同时访问)锁
语法:
synchronized( 锁对象 ){
//操作共享资源的代码
//....
}
-
代码被多个线程访问
-
代码中有共享的数据
-
共享数据被多条语句操作
Synchronized 同步代码块的锁对象可以是任意类对象(线程的实现方式是继承于Thread)
synchronized 可以提到方法上
如果是静态方法,Synchronized的锁对象就是当前类的类对象
如果不是静态方法, 在runnable创建方式下可以实现,锁对象就是当前对象 this
只要锁对象一致,就不会有问题
public synchronized static void demofunction(){
}
线程休眠是很必要的,减少服务器的压力,如果休眠时在同步代码块中,则不会让出同步锁
网友评论