Java 中的互斥体和信号量是否非常有用,请记住还提供了同步实用程序?或者与 C++ 相比,它们只是为了完整性而提供的?我没有找到太多关于互斥体和信号量的报道。
最佳答案
在数据共享或任务同步的多线程应用程序中,完成此操作的最低级别对象是简单的锁或互斥锁。最重要的是,您可以构建更复杂的对象或算法,例如信号量。
多年来,Java 为许多最常见的多线程设计模式提供了对象和算法。看看java.util.concurrent包以获得完整列表。
同步,恕我直言,我认为它取代了不起眼的互斥体的大多数用例。并且它减少了正在处理的代码行数。但信号量仍然有用例。正如您在 java.util.conccurrent 包中所看到的,Semaphore 类是在 Java 1.5 中添加的。所以我认为,并且我认为 Java 的作者也认为,仍然需要 Semaphore 对象。但请看一下 java.util.concurrent 包中提供的各种类。只需通读它即可深入了解您之前可能不知道的常见多线程模式。使用更简洁的并发类来解决多线程问题,而不是使用较低级别的构造(如简单的互斥体或同步块(synchronized block))实现更复杂的代码,可能会导致更少的代码行和更优雅的解决方案。
关于java - Java 中的互斥量和信号量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31786858/