一知半解的synchronied如何理解?
- 内容介绍
- 文章标签
- 相关推荐
本文共计1675个文字,预计阅读时间需要7分钟。
`synchronized`是Java的同步锁,用于确保同一时刻只有一个线程能访问某个资源。通过使用`synchronized`,可以保证当一个线程正在修改共享资源时,其他线程无法同时访问该资源,从而保证线程安全。
synchronized是什么synchronized是java同步锁,同一时刻多个线程对同一资源进行修改时,能够保证同一时刻只有一个线程获取到资源并对其进行修改,因此保证了线程安全性。
synchronized可以修饰方法和代码块,底层实现的逻辑略有不同。
Object obj=new Object();
synchronized(obj){
//do soming
}
编译后的代码为:
...
10 astore_2
11 monitorenter
12 aload_2
13 monitorexit
14 goto 22 (+8)
17 astore_3
18 aload_2
19 monitorexit
20 aload_3
21 athrow
22 return
当代码执行到synchronize(obj)时,对应的字节码为monitorenter进行加锁操作,代码执行完后就是monitorexit进行锁的释放。
本文共计1675个文字,预计阅读时间需要7分钟。
`synchronized`是Java的同步锁,用于确保同一时刻只有一个线程能访问某个资源。通过使用`synchronized`,可以保证当一个线程正在修改共享资源时,其他线程无法同时访问该资源,从而保证线程安全。
synchronized是什么synchronized是java同步锁,同一时刻多个线程对同一资源进行修改时,能够保证同一时刻只有一个线程获取到资源并对其进行修改,因此保证了线程安全性。
synchronized可以修饰方法和代码块,底层实现的逻辑略有不同。
Object obj=new Object();
synchronized(obj){
//do soming
}
编译后的代码为:
...
10 astore_2
11 monitorenter
12 aload_2
13 monitorexit
14 goto 22 (+8)
17 astore_3
18 aload_2
19 monitorexit
20 aload_3
21 athrow
22 return
当代码执行到synchronize(obj)时,对应的字节码为monitorenter进行加锁操作,代码执行完后就是monitorexit进行锁的释放。

