首页互联网synchronized?synchronized和Lock的区别

synchronized?synchronized和Lock的区别

编程之家2024-03-17102次浏览

一、synchronized的本质

1、同步器的本质就是加锁

synchronized?synchronized和Lock的区别

加锁目的:序列化访问临界资源,即同一时刻只能有一个线程访问临界资源(同步互斥访问)

不过当多个线程执行一个方法时,该方法内部的局部变量并不是临界资源,因为这些局部变量是在每个线程的私有栈中,因此不具有共享性,不会导致线程安全问题。

2、锁类型

隐式锁:Synchronized加锁机制是Jvm内置锁,不需要手动加锁与解锁Jvm会自动加锁跟解锁。

显式锁:Lock;例如:ReentrantLock,实现juc里的Lock接口,实现是基于AQS实现,需要手动加锁跟解锁ReentrantLocklock(),unlock();

二、synchronized与valtie区别

synchronized是单乙数连接。而valtie是双乙数连接。

synchronized?synchronized和Lock的区别

三、synchronized可以让线程停止那

synchronized关键字不能直接让线程停止,它主要用于实现多个线程对共享资源的互斥访问。当一个线程进入synchronized代码块时,它会获得对象的锁,其他线程必须等待该线程释放锁后才能进入。这样可以确保在一个时间点只有一个线程执行同步代码,避免多个线程同时访问共享资源导致的数据不一致问题。要停止一个线程,通常可以使用其他方法,如设置一个标志,当标志为true时,线程执行结束返回,从而实现线程的停止。或者使用Thread类提供的stop()方法,但这种方法已经被废弃,因为它可能会导致线程不安全或资源泄漏的问题。因此,正确停止线程的做法是通过合理的设计和编码,让线程自然结束或使用interrupt()方法发送中断信号,让线程在合适的时机退出执行。

synchronized?synchronized和Lock的区别
vlookup函数用法(Excel中vlookup函数如何使用)dijkstra算法步骤例题?dijkstra算法步骤例题矩阵