Synchronized理解及用法

加锁:

1.同步实例方法,锁是当前实例对象

2.同步类方法,锁的是当前类对象

3.同步代码块,锁是括号里面的对象

原理:

JVM内置锁通过synchronized使用,通过内部对象Monitor(监视器锁)实现,基于进入与退出Monitor对象实现方法与代码块同步,监视器锁的实现依赖底层操作系统的Mutex Lock(互斥锁)实现,它是一个重量级锁性能较低

原文地址:https://www.cnblogs.com/kobe-lin/p/11681954.html

时间: 2024-10-10 16:20:48

Synchronized理解及用法的相关文章

java中synchronized关键字的用法

在java编程中,经常需要用到同步,而用得最多的也许是synchronized关键字了,下面看看这个关键字的用法. 因为synchronized关键字涉及到锁的概念,所以先来了解一些相关的锁知识. java的内置锁:每个java对象都可以用做一个实现同步的锁,这些锁成为内置锁.线程进入同步代码块或方法的时候会自动获得该锁,在退出同步代码块或方法时会释放该锁.获得内置锁的唯一途径就是进入这个锁的保护的同步代码块或方法. java内置锁是一个互斥锁,这就是意味着最多只有一个线程能够获得该锁,当线程A

Java基础-synchronized关键字的用法(转载)

原文地址:http://blog.csdn.net/cq361106306/article/details/38736551 synchronized--同步 顾名思义是用于同步互斥的作用的. 这里精简的记一下它的使用方法以及意义: 当synchronized修饰?this或者非静态方法或者是一个实例的时候,所同步的锁是加在this或者实例对象引用上面的.比如a,b同为Main类的实例化对象,a调用被同步的方法,和b调用被同步的方法,没有形成互斥.但是不同线程的a对象调用被同步的方法就被互斥了.

关于@synchronized(self)的用法

@synchronized 的作用是创建一个互斥锁,保证此时没有其它线程对self对象进行修改.这个是objective-c的一个锁定令牌,防止self对象在同一时间内被其它线程访问,起到线程的保护作用. 一般在公用变量的时候使用,如单例模式或者操作类的static变量中使用. Objective-C支持程序中的多线程.这就意味着两个线程有可能同时修改同一个对象,这将在程序中导致严重的问题.为了避免这种多个线程同时执行同一段代码的情况,Objective-C提供了@synchronized()指

关于Python中的列表理解及用法

在Python中,列表理解通常用于编写单行语句,这些语句通过可迭代对象进行迭代以创建新的列表或字典.本文首先介绍for循环如何在Python中工作,然后解释如何在Python中使用列表理解. Python中的for循环 Python中的for循环语句按顺序遍历任何对象.列表.字符串等的成员.与其他编程语言相比,它的语法更加简洁,不需要手工定义迭代步骤,也不需要开始迭代.尽管有几种方法可以使它的行为与其他编程语言相同(本文将不详细讨论).还可以使用continue.break.pass等语句控制f

synchronized关键字的用法

synchronized用于给方法或者块加锁用的,只有获得该对象或者块的锁的对象才能够执行里面的代码,否则将阻塞在那里,等待该锁被释放,然后获得该锁继续执行.比如下面模拟售票的代码: /** * 模拟售车票 *  * @author Administrator * */public class SynchronizedDemo {     public static void main(String[] args) {        Runnable runnable = new Runnabl

一个例子理解threadLocal用法

ThreadLocal可以使对象达到线程隔离的目的.话不多说直接上代码: /** * 一个例子理解threadLocal * * 一个单例模式的类 */ public class SingleThreadLocalTest { private static SingleThreadLocalTest single = new SingleThreadLocalTest(); private ThreadLocal<String> threadLocal = new ThreadLocal<

@synchronized(self)的用法 小结

@synchronized() 的作用是创建一个互斥锁,保证在同一时间内没有其它线程对self对象进行修改,起到线程的保护作用, 一般在公用变量的时候使用,如单例模式或者操作类的static变量中使用. 例一://单例的实现 Student.h #import <Foundation/Foundation.h> @interface Student : NSObject<NSCopying,NSMutableCopying> @property(nonatomic,copy)NSS

关于@synchronized(self)的用法(转)

@synchronized 的作用是创建一个互斥锁,保证此时没有其它线程对self对象进行修改.这个是objective-c的一个锁定令牌,防止self对象在同一时间内被其它线程访问,起到线程的保护作用. 一般在公用变量的时候使用,如单例模式或者操作类的static变量中使用. # import "NetworkManager.h" static NetworkManager *network = nil; @implementation NetworkManager + (Netwo

泛型的理解和用法

//看了别人写的,结合自己的理解加了和减了一点东西 泛型: 1.为何有泛型? 首先,泛型是在编译期间进行校验的以保证类型安全. 第二就是,集合不会保证对象的类型,统一用父类object类型来指代,由于java的特性,在编译期间,父类和子类都可以用父类来指代,虽然运行时都是自己的实际类型,集合这个是这样的,他们用object这个统一的父类来指代,但是在编译期间你要使用子类特有的方法时的话还是要转换成子类类型,现在问题来了,集合类里面什么元素几乎都可以添加,毕竟都是object的子类,但是我们要使用