Q
Java同步
6
A
回答
12
它可以防止多个线程运行大括号内包含的代码。当一个线程运行该代码时,其余的线程被阻塞。当第一个线程完成时,其中一个被阻塞的线程将运行同步代码,依此类推。
你为什么要这样做?块内的代码可能会修改对象,使其处于不一致状态,直到块退出。所以进入的第二个线程会发现不一致的对象。从那时起,混乱随之而来。
一个例子是将一个对象从一个池中移出并插入到另一个池中。第二个线程可能在第一个线程移动对象时运行,随后找到两个集合中引用的对象,或者两者都不。
您也可以使用此机制来限制多个线程访问旨在供一个资源使用的资源(例如,一个普通的数据库)。
16
它防止并发访问资源。 Sun的例子有一个pretty good description。
0
从现已解散的Java快速参考以前在http://www.janeg.ca/scjp/threads/synchronized.html
:
同步线程具有顺序访问线程上运行 代码块的作用 。 在此上下文中的序列化意味着 每次给予一个线程权利 执行特定的代码块。
11
注意以下两个是等价的:
synchronized void someMethod() {
// ...
}
和
void someMethod() {
synchronized (this) {
// ...
}
}
相关问题
- 1. java同步
- 2. Java同步块
- 3. Java同步
- 4. JAVA同步
- 5. 同步块 - Java
- 6. Java同步器
- 7. Java同步锁
- 8. 同步和java中的同步块
- 9. Java同步线程
- 10. Java同步列表
- 11. Java同步问题
- 12. 调试Java同步
- 13. 同步在Java中
- 14. Java同步困境
- 15. Java同步对象?
- 16. Java同步写块
- 17. Java同步轮询
- 18. Java线程同步
- 19. Java线程“同步”
- 20. Java CDI @ApplicationScoped同步/异步访问
- 21. Java线程和同步块
- 22. 的Java同步和线程
- 23. Java同步以避免ConcurrentModificationExceptions?
- 24. Java - 同步方法/块
- 25. Java - 同步静态方法
- 26. Java线程:同步块
- 27. Java - 多线程和同步
- 28. JAVA同步周期,回调
- 29. 的Java同步问题
- 30. Java。读,写,单独同步