我听说有不同级别的Synchronization.are(如果有的话,请你用一段代码解释它们吗?)谢谢。是否有任何不同级别的同步?
1
A
回答
3
在Java 5之前只有一个:关键字。这等待并获得了参考对象的排他锁。当应用于某个功能时:
public synchronized void doStuff() { ... }
正在同步的对象是this
。
Java 5增加了很多并发实用程序,其中之一是Lock
对象。这有几个版本,包括ReadWriteLock
。这是我能想到的唯一可以指出的事情。
的问题在于它相当粗糙。做得很糟糕可能会导致死锁。 Java 5 utils允许非阻塞锁获取,锁获取超时和读/写锁支持。
3
你真的需要解释你的意思是“同步水平”。你谈论的区别:
public synchronized void foo()
{
...
}
和
public void foo()
{
synchronized(lock)
{
...
}
}
?或者也许在上面和使用java.util.concurrent.locks的锁?
如果您可以给您听到的更多背景,我们可能会更好地帮助您。更重要的是,你想解决什么问题,你认为可能需要这些信息?
0
我假设OP指的是多线程中使用的对象的同步,而不是Java中的关键字。
这是我的理解,在阅读Goetz后,我们了解了Java中不同级别的同步。
让我们假设我们有一个对象,我们必须在132个线程中使用这个线程,这个线程持续地,纯粹地随机地使用了100年。
abstract Class ICount {
int i;
String iString;
public void add(int i);
public void sub(int i);
public void synchronized print(){
assert(i == Integer.valueOf(iString));
System.out.println("i"+String.valueof(i)+" == "+iString);
}
}
现在可能会有不同的实现,无论是设计还是粗心,在不同层次上都是线程安全的。
- 线程安全同步实现:保证任何java代码,不使用反射来使用这个实现来固定对象,永远不会触发断言。
- 并行同步实现:除了保证线程安全外,此实现的作者还尝试允许在可能的情况下同时执行,并且还避免了锁(争用)。
- 线程不安全的同步实现:开发人员至少知道他的类不是线程安全的,并且要求你不要使用这个实现,除非你只有一个线程。
如果这是一个真正的问题,大多数的实际实现落在第四类'同步',这有时是有效的,而不是足以在上述类别之一进行分类的文档,默认属于第四类。
相关问题
- 1. :是否需要任何同步?
- 2. 是否有任何设计模式的配置同步
- 3. 如何检查AWS S3同步是否有任何更改?
- 4. gzip的不同压缩级别有何不同?
- 5. 是否有任何工具帮助与TFS同步目录?
- 6. System.Net.Mail.SmtpClient.Send是否同步?
- 7. connectionWithRequest是否同步?
- 8. 块级同步
- 9. CUDA线程和块级别同步
- 10. 添加库后级别同步失败
- 11. JSR303:是否有可能具有不同的验证/消息级别?
- 12. jQuery.remove()是否真的同步?
- 13. 有任何同步服务库的iPhone
- 14. 如何使用不同的线级别的不同功能
- 15. 不同类别的不同日志级别
- 16. 在同级别
- 17. 在同级别
- 18. 同级别
- 19. JSF Ajax CommandButton不同级别
- 20. 任务同步
- 21. 同步任务
- 22. 同步任务不工作
- 23. 删除现有的同级同级,但不是这样
- 24. 同步不同步
- 25. 同步语句 - 同步方法和同步语句是否相同?
- 26. 是否有另一种同步方式
- 27. 是否有可能中止同步XmlHttpRequest?
- 28. 页面级别同步问题|当任何组件更新的hybris
- 29. 混合两个具有不同优化级别的静态库是否可行?
- 30. Twilio中是否有任何不同类型的女声?
只是有些地方写有一些同步的水平,我不知道这是什么意思?而且我已经从我的老师那里听到了一些,他只是有一个点它,他说那些什么各级[:-(] – Johanna 2010-01-20 06:52:25
@Johanna - ?在哪里“的地方”其实,我怀疑你是困惑和你的老师说的是完全不同的东西无论如何,你应该问的第一个人是你的老师?还是有人其他谁去讲座。 – 2010-01-20 07:08:23