gpt4 book ai didi

java - 如何在新线程中创建数组的副本

转载 作者:行者123 更新时间:2023-12-01 13:35:12 25 4
gpt4 key购买 nike

我使用这个方法来创建数组的副本,但我怀疑,我打开了线程并用新线程发送了数组,如果我不在新线程中创建这个数组的副本,数组可能会改变,这会严重影响我的程序机制。

   degersakla = new Integer[10000][1][boyut];
Thread t1 = new Thread(new Runnable() {
@Override
public void run() {

new GunlukKontrol(update, data, limit, degersakla, sincetime, untiltime);

}
});
t1.start();
try {

Thread.sleep(400000); // Waiting For new Thread's Copy Operation
} catch (InterruptedException ex) {
Logger.getLogger(UpdateDeneme.class.getName()).log(Level.SEVERE, null, ex);
}
// new Thread
public GunlukKontrol(Object[][][] update, String[][] data, Object[] limit, Integer[][][] degersakla, String sincetime, String untiltime) {

this.degersakla = new Integer[degersakla.length][1][boyut]; // copy method of array
for (int i = 0; i < degersakla.length; i++) {
for (int j = 0; j < 1; j++) {
for (int k = 0; k < boyut; k++) {
this.degersakla[i][j][k] = degersakla[i][j][k];
}

}
}

这是正确的方法吗?

最佳答案

如果在启动第二个线程之后更改第一个线程中的数组,则会出现问题。

必须通过将数组的副本传递给第二个线程来解决该问题。如果让第二个线程复制数组,则无法避免数组上的数据竞争。

关于java - 如何在新线程中创建数组的副本,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21334025/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com