Java中的同步上下文是什么
大家都知道 Java 中的同步上下文可以位于
- 实例上。
- 在某个加载的类的 java.lang.Class 实例上。
- 在给定的对象上
我需要问;当我编写
Dimension d = new Dimension();
synchronized(d){
// critical atomic operation
}
给定对象的同步实际上等于实例上的同步时。
因此,当我编写 synchronized(d) (其中 d 是对象的实例)时,线程将获得所有同步实例代码块的锁。
您能给我有关同步上下文的更多详细信息吗?
您的回复将不胜感激。
All of you know the synchronization context in Java that they are can be
- on the instance.
- on the java.lang.Class instance for a certain loaded class.
- on a given object
And I need to ask; When i write
Dimension d = new Dimension();
synchronized(d){
// critical atomic operation
}
synchronization of a given object equal to synchronization on the instance practically.
so when I write synchronized(d) where d is an instance of object, then the thread will gain the lock for all synchronized instance block of code.
Can you please give me more details about synchronization context.
Your replies will be appreciated.
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(2)
synchronized
关键字提供对其引入的代码块(可能是整个方法)的串行访问。访问的序列化是通过使用对象作为互斥锁来完成的。synchronized
的三种基本用途是:A. 在静态方法上:
B. 在实例方法上:
C. 在任意代码块上:
在所有情况下,一次只能有一个线程进入同步块。
在所有情况下,如果同一个锁对象用于多个块,则只有一个线程可以进入任何同步块。例如,如果有两个同时调用这些方法的线程将阻塞,直到第一个线程退出该方法。
The
synchronized
keyword provides serial access to the block of code (which could be an entire method) it introduces. Serialization of access is done by using an object as a mutex lock.The three basic uses of
synchronized
are:A. On a static method:
B. On an instance method:
C. On an arbitrary block of code:
In all cases, only one thread at a time may enter the synchronized block.
In all cases, if the same lock object is used for multiple blocks, only one thread may enter any of the synchronised blocks. For example, if there are two - other simultaneous threads calling the methods will block until the first thread exits the method.
将synchronized 关键字应用于非静态方法是简写形式:
如果将
synchronized
应用于静态方法,那么它会在调用该方法时锁定类对象(MyClass.class)。Applying the synchronized keyword to a non-static method is shorthand for:
If you apply
synchronized
to a static method, then it locks the class object (MyClass.class) whilst the method is called.