Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/308.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 如何避免线程在细胞自动机中竞争相同的像素_Java_Multithreading_Cellular Automata - Fatal编程技术网

Java 如何避免线程在细胞自动机中竞争相同的像素

Java 如何避免线程在细胞自动机中竞争相同的像素,java,multithreading,cellular-automata,Java,Multithreading,Cellular Automata,我正在写一个随机的细胞自动机,其中的细胞(定义为一组像素)在网格上运行。 网格在主程序中,我有一个用于单元对象的类和一个用于单元行为随机计算的类继承线程。 我的问题是,当两个细胞接触时,它们可以同时随机获取网格的相同像素,或者一个细胞可以在另一个细胞还不知道的情况下获取它。 因此,它会导致一些错误,其中像素不属于细胞,但细胞仍将其识别为“自身” 我的问题是:如何同步(或“优先级”?)线程,以便它们不会同时修改相同的公共组件 谢谢。使用Java关键字synchronized,或者更确切地说,使用J

我正在写一个随机的细胞自动机,其中的细胞(定义为一组像素)在网格上运行。 网格在主程序中,我有一个用于单元对象的类和一个用于单元行为随机计算的类继承线程。 我的问题是,当两个细胞接触时,它们可以同时随机获取网格的相同像素,或者一个细胞可以在另一个细胞还不知道的情况下获取它。 因此,它会导致一些错误,其中像素不属于细胞,但细胞仍将其识别为“自身”

我的问题是:如何同步(或“优先级”?)线程,以便它们不会同时修改相同的公共组件


谢谢。

使用Java关键字
synchronized
,或者更确切地说,使用Java Synchronizer框架中的新数据结构,如
Mutex
ReentrantLock


但在此之前,我建议阅读线程编程的介绍…

听说过同步块吗?用它,谢谢。我实际上是自学编程的,我不知道这一点