在只有一台服务器的情况下,碰到并发时需要对数据进行加锁,主要有两种方式,synchronized和lock
不见不散之synchronized
当一个线程抢到资源后,其他线程就一直等待,直到抢到锁,可以直接用synchronized,但是可能造成线程挤压和拥堵
synchronized(this){
}
过时不候之lock
lock更为灵活,我们可以先进行trylock,判断有没有获得锁,获取不到就干else的事
if(lock.trylock()){
lock.lock()
…
finally {lock.unlock()}
}else{
…}
如果不想直接放弃,也可以选择,在指定时间内,是否获得,否则就干点别的事,只需在trylock中填上参数即可
lock.trylock(1,TimeUnit.SECOND )