现象:
线程池中使用了全局变量 map,并在异步线程程序中对 map进行了赋值,造成程序运行出现一会儿成功,一会儿失败,运行不稳定;
原因:
线程池中多全局变量没有做线程控制;
修改:
方式一:比较笨,将赋值工作在异步线程外进行;
方式二: 略笨,copy 全局变量为 局部变量,放入线程池中使用
关键字: 异步线程池,多线程
注:非主线程调用主线程的变量时,该 变量必须是final的,或者 初始化写死的。
博客讨论了在线程池中使用全局变量导致的程序运行不稳定的問題。由于多线程环境中未对全局变量进行同步控制,导致程序一会成功,一会失败。提出了两种解决方案:一是将赋值操作移出异步线程,二是复制全局变量为局部变量在池中使用。同时强调非主线程访问主线程变量需确保其为final或初始化。
现象:
线程池中使用了全局变量 map,并在异步线程程序中对 map进行了赋值,造成程序运行出现一会儿成功,一会儿失败,运行不稳定;
原因:
线程池中多全局变量没有做线程控制;
修改:
方式一:比较笨,将赋值工作在异步线程外进行;
方式二: 略笨,copy 全局变量为 局部变量,放入线程池中使用
关键字: 异步线程池,多线程
注:非主线程调用主线程的变量时,该 变量必须是final的,或者 初始化写死的。
2110
5635

被折叠的 条评论
为什么被折叠?