FWQ
多线程访问成员变量问题:为什么多个线程修改同一个变量,却打印出相同的值?
多线程访问成员变量问题 当有多个线程同时访问共享成员变量时,如果没有采取,就会导致线程安全问题。以某个成员变量 temp 为例,在有多个线程同时对其进行修改时,不同的线程可能会读到尚未更新的值。 问题: 程序中使用 executorservice 创建了 100 个线程,每个线程启动后都执行一个 test2 线程。每个 test2 线程在休眠 1 秒后,对 test3 类的成员变量 temp 进行修改,然后输出修改后的值。虽然每个线程都应修改不同的 temp 值,但实际上打印的结果却是相同的。 原因: 问题的原因在于线程在访问和修改 temp 值时未进行同步。当多个线程同时访问 temp 时,由于…