Java语言字典的打开,打开之后如何再出现了重复,这个和文件的重复的区别是什么?如何解决
不知道你这个问题是否已经解决, 如果还没有解决的话:以上描述一个进程可以理解为一个资源容器,当一个进程中的内存资源,可以被多个线程修改时则为不安全的。CPU的速度是远超内存的,并且CPU会碎片化执行处理,让所以线程都可以争抢CPU使用资源;
1、多个线程使用内存中同一个值进行计算,因为线程是异步执行的,也就会出现这个值在某个阶段被多次使用,导致最终计算数据不准确;
2、多个服务中根据同一个值进行计算,由于服务之间也是异步执行的,也会导致这个值在某个阶段被多次使用,导致最终计算数据不准确;
案例代码如下,下方代码就会出现多个线程拿到相同值进行计算
private static int num = 0;
public static void main(String[] args) throws InterruptedException {
for (int i = 0; i <= 100; i++) {
new Thread(new Count()).start();
}
//因为是线程异步执行所以需要休眠等待执行完毕
Thread.sleep(8000);
}
static class Count implements Runnable {
@Override
public void run() {
String name = Thread.currentThread().getName();
try {
//随机休眠毫秒数,模拟业务处理场景
Thread.sleep(new Random().nextInt(80) + 50);
} catch (InterruptedException e) {
e.printStackTrace();
}
++num;
System.out.println("name = " + name + " num = " + num);
}
}
此代码打印结果是无法保证最终num值为100的,每次执行都可能会是不同的效果
去重就好了吧