java - 在线程中使用同步

标签 java keyword synchronized

下面的理解是什么?
我经历了this在 SO 上发布,但仍然无法组装它。

代码1:

synchronized(this){ 
// some code
}

代码2:

Object lock = new Object();

synchronized(lock){
// some code
}

任何教程或一些链接来解释同步,就像他们向 child 解释一样?

最佳答案

基本上,Java 中的每个对象都有一个“锁”。

当线程到达对同步(某物)的调用时,它必须在继续之前获取某物的锁。如果你想一次只允许一个线程修改一个对象的状态,最明显的事情就是同步那个对象的锁。如果允许并行调用不同的方法,则需要不同的锁。

如果写synchronized(this),或者简单的synchronized,线程必须获取与当前对象关联的锁(方法被调用)。

请注意,自 Java 5.0 起,并发包提供了正确的 locks可以用来代替同步。

关于java - 在线程中使用同步,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1354086/

相关文章:

java - Java UDP打洞示例-通过防火墙连接

java - Rmiregistry 与 LDAP

java - java中真实打印机的打印输出与虚拟打印机的打印输出不同

java - 类文字语法是否必要?

java - InstanceOf 关键字在 Java 小程序中不起作用

java - IRC的DCC协议(protocol)中如何处理IPv6

ruby - 从用户提交的文本中提取关键字的好方法是什么?

Java 7 Calendar.getInstance、TimeZone.getTimeZone 同步且速度慢,有什么解决方法吗?

Java 数组 : synchronized + Atomic*, 或同步就足够了吗?

java - 使用同步方法锁定时释放 BufferedReader.readLine()