深入Synchronized和java.util.concu...
发布网友
发布时间:2023-10-28 03:27
我来回答
共1个回答
热心网友
时间:2024-08-13 04:38
两者其实都是差别不大,关键看你怎么用,Synchronized需要传入锁对象,当这个对象被锁住的话,其它的线程想调用这个方法是就必须等待这个锁对象被释放,
如Synchronized(Outputer.class)它锁定的是类的字节码对象,而 synchronized void output2(String name)它锁定的是调用这个方法的对象,只要锁不冲突,方法就可以并行执行。
而Lock的话个人感觉比较自由,在程序需要控制的地方使用lock()方法锁住,待程序的一个原子操作执行完之后就可以unlock()释放资源了,另外读写锁的话可以适应更多的业务场景,可以用来做缓存池