Java 线程教程

标签 java multithreading

我正在浏览 Java 并发教程,以了解它在 Java 中的工作原理,并对“MsLunch”示例 @ http://docs.oracle.com/javase/tutorial/essential/concurrency/locksync.html 有疑问。

我试图理解 MsLunch 示例中所示的编码与使用 2 个同步方法之间的区别。

据我所知,在方法上使用synchronized关键字依赖于与该方法对象关联的固有锁。因此,如果一个有两个同步方法a()b()a() b() 不能在同一对象上同时调用。

但是如 MsLunch 类中所示编码 a()b() 允许同时在同一对象上调用这两个方法。

我的理解正确吗?

最佳答案

MsLunch 示例使用具有不同对象实例的synchronized block 来锁定。因此 inc1()inc2() 可以同时运行。

如果是同步方法,那么 this 将用于锁定,方法 inc1()inc2() 将是串行执行。

关于Java 线程教程,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21572855/

相关文章:

java - Netbeans 6.0.1 支持 JCAPS 还是我必须下载 netbeans 6.1?

java - 使用java进行多线程交叉验证

multithreading - 在顺序执行的线程中使用ArrayBuffer?

c++ - Boost.Thread 还是::thread?

java - 新线程不显示框架

java - 如果用户已经通过身份验证,我如何将请求重定向到已配置的 Shiro loginUrl?

java - 知道何时结束冒泡排序中的循环

java - 为什么java String将一些UTF-8符号视为多个字符

java - 如何在线程迭代之前和之后打印一些消息?

multithreading - Work Stealing 总是最合适的用户级线程调度算法吗?