2009-12-18 107 views
0

我只是有一个关于Java中的并发编程的简单问题。 例如, 我有一个NxN矩阵,并且矩阵的每一行都有相应的线程,如果每行中的线程之间没有交互,如果多个线程访问和修改单独的行是安全的(或正确的)的矩阵同时? 谢谢!Java互斥

+0

不是问题... – zedoo 2009-12-18 23:19:13

+2

你在开玩笑吗,zedoo? – 2009-12-18 23:20:48

+0

不,我不是在开玩笑。在OP提供的背景下,没有安全/正确的概念。 – zedoo 2009-12-18 23:23:35

回答

2

如果您只是在读取矩阵,它总是安全的。如果您正在进行写操作,但是一个线程只会读取和写入所分配的行,则这是安全的。只有当你从另一个线程写入的单元格读取线程时,你必须担心锁定。

+1

唯一的问题可能是OP在评论中讨论的“主线程”:如果此线程读取值,这些值可能不是最新的。 – 2009-12-18 23:35:19

+0

你是对的,虽然主线程正在访问树状图,但不能保证其他人不在做R/W。我会照顾这一点,并确保没有奴隶进入树形图,而主人在。 – user200340 2009-12-18 23:44:14

+0

我只是有一个问题。 如果多个线程同时访问同步方法中的树形图,并且主线程正在等待以另一个同步方法访问树形图。如果有一个线程离开第一个方法,会发生什么情况,锁是否会返回并且对主线程可见,或者主线程是否只能看到锁,直到最后一个线程从第一个同步方法离开为止。 – user200340 2009-12-18 23:59:10

0

如果你有一个本地二维数组,而不是一个包装类,那么并发行访问应该没问题。只要你不读/写或写/写同一个内存位置,你没关系。

0

假设您可以保证任何线程都不会改变任何其他线程读取或变异的元素,也没有线程会更改矩阵的维度,这应该是安全的。