当前位置: 首页 > 知识库问答 >
问题:

线程同步与任务同步与并发字典(无需同步),要选择哪个

陆飞鸿
2023-03-14

如果在我们的程序中,我们使用线程访问共享集合,那么我们应该使用Mutex、Monitor或Sempahore等确保线程安全

但是如果我们不使用线程,但我们使用的是任务,然后多个任务尝试访问公共共享集合,那么我们也应该通过一些方法来确保安全性但是如果我们使用一些现成的线程安全集合,如 ConcurrentDictionary,那么确保锁定和线程任务安全是不需要的,因为它已经在框架级别处理。

所以基本上我想知道,如果我们在并发消费者环境中使用共享资源,可以使用哪种方法。

共有2个答案

郎恺
2023-03-14

总的来说,除非您有非常具体的性能需求,否则请使用最简单的解决方案。也就是并发字典。因为同步逻辑是内置的,所以几乎可以肯定没有人会出错。“手动”任务和线程同步有时会非常棘手。

伍玮
2023-03-14

它们都是解决不同问题的好方法。如果您能准确地告诉我们您要做什么、共享哪些资源、需要哪些类型的访问,那么我们可以告诉您哪种可能适合您的解决方案。

 类似资料:
  • 典型的UNIX系统都支持一个进程创建多个线程(thread)。在Linux进程基础中提到,Linux以进程为单位组织操作,Linux中的线程也都基于进程。尽管实现方式有异于其它的UNIX系统,但Linux的多线程在逻辑和使用上与真正的多线程并没有差别。 多线程 我们先来看一下什么是多线程。在Linux从程序到进程中,我们看到了一个程序在内存中的表示。这个程序的整个运行过程中,只有一个控制权的存在。

  • 我是java新手。我有点混淆了线程安全和同步。线程安全意味着一个方法或类实例可以被多个线程同时使用,而不会出现任何问题。其中同步意味着一次只能有一个线程运行。 那么它们是如何相互关联的呢?

  • 同步(Synchronization) 线程间的通信主要是通过共享访问字段以及其字段所引用的对象来实现的。这种形式的通信是非常有效的,但可能导致2种可能的错误:线程干扰(thread interference)和内存一致性错误(memory consistency errors)。同步就是要需要避免这些错误的工具。 但是,同步可以引入线程竞争(thread contention),当两个或多个线程

  • 问题内容: 我们什么时候应该使用 的ReentrantReadWriteLock 相比, 同步 在Java的多线程环境中的关键字? 使用 ReentrantReadWriteLock而 不是Java中的 同步 有什么好处? 任何人都可以举一个例子(用Java)吗? 谢谢! 问题答案: 同步一次允许一个线程。 读/写锁可以同时允许多个读取器,但前提是没有写入器。因此,在某些使用情况下,由于读取器群体

  • 下面的代码创建了一个新的custom um < code > Thread ,并等待线程结束,直到主线程再次激活。 > < li >我不太明白它是如何工作的。为什么< code > myth read . wait();立即接到电话? < li> 为什么不改用< code>Thread.join()? 公共静态void main(String[] args) {

  • 所以我有一个代码: 所以我将线程添加到我的线程列表中,然后启动这些线程。这是MyThread类: 我想做一个程序来创建线程,将它们添加到列表中,调用它们,但是每个线程都应该等到前一个线程结束它的任务。因此输出应该如下所示: 如何使用实现这一点?我尝试了使用的不同方法,但失败了。