课程咨询: 400-996-5531 / 投诉建议: 400-111-8989
认真做教育 专心促就业
并发编程开发是程序员在使用java编程语言的时候会经常用到的一种开发方式,下面我们就一起来了解一下,java并发编程开发都有哪些常见问题。
(1)指令重排序
指令重排序可能是Java编译器在编译Java代码时对虚指令进行重排序,也可以是CPU对目标指令进行重排序,它们的目的当然都是为了高效(换句话说,我们自己写的代码对于计算机的解析和运行来讲顺序未必是高效的)。
(2)4字节赋值问题
在JVM中允许对一个非volatile的64位(8字节)变量赋值时,分解为两个32位(4字节)来完成,但并不是必须要一次性完成(从Java角度来理解,在虚指令中对变量的操作都以slot为单位,每个slot就是4字节)。
问题出来了,如果变量是long、double类型的数据,在赋值某个32位后,正好被另一个线程所读取,那么它读取出来的数据就可能是不可预见的结果。
(3)数据失效
正常的在JavaBean中提供大量的set、get是没有问题的,如果这样的对象提供给多线程使用就不一定了,用前面提到的可见性的道理来讲,当一个线程调用set后,其他的线程未必能看得到。
这似乎没什么大不了的,那么胖哥就说个有点小影响的例子。
假如某个赋值是一个应用平台的系统配置参数,它在内存中有一份拷贝,这份配置参数将会影响程序对某些金额的计算方法或业务流程,这时偶然发生了另一个线程看不到的情况,导致虽然有新的配置,但是这个线程还在走老路,那么结果自然是错误的,完全由可能带来经济损失。
【免责声明】本文系本网编辑部分转载,转载目的在于传递更多信息,并不代表本网赞同其观点和对其真实性负责。如涉及作品内容、版权和其它问题,请在30日内与管理员联系,我们会予以更改或删除相关文章,以保证您的权益!更多内容请加danei0707学习了解。欢迎关注“达内在线”参与分销,赚更多好礼。