【发布时间】:2013-09-17 01:49:59
【问题描述】:
如果我们创建例如 3 个线程 T1、T2 和 T3,它们每个都调用相同的函数或过程,那么如果我们调用它们一段时间 T1.start() T2.start() T3.start() 是否有效?或者我们需要同步它们??
【问题讨论】:
标签: java multithreading thread-safety
如果我们创建例如 3 个线程 T1、T2 和 T3,它们每个都调用相同的函数或过程,那么如果我们调用它们一段时间 T1.start() T2.start() T3.start() 是否有效?或者我们需要同步它们??
【问题讨论】:
标签: java multithreading thread-safety
您不同步函数,而是同步它们对资源的访问。
如果任何函数修改了公共资源 *,而其他函数需要访问它,无论是读取还是写入,您都需要同步对资源的访问。否则,无需添加同步。
【讨论】:
Vector,我正在考虑创建 5 个Threads,它们同时向Vector 添加元素,所以我想我的想法不可行??
BlockingQueue<T> 而无需额外同步。
Threads,我的意思是我可以调用普通函数而不是Threads,因为它似乎给出了相同的结果!?即使使用BlockingQueue<T> Threads 也不会并行工作,因此它与指令后的工作指令相同.. ?
java.util.Vector 已经同步,对于写入同一个Vector 的多个线程,不需要额外同步。
仅当您在不同线程中读取/写入相同的变量(状态)时,才需要同步。如果方法仅使用局部变量 - 您不需要同步它们。
【讨论】: