zl程序教程

您现在的位置是:首页 >  Java

当前栏目

所有实现IAnimal接口的实例对象

2023-03-20 14:51:27 时间

如果我们想要一次性将所有实现了IAnimal接口对象Cry方法的实例全部执行一遍,只能一个对象一个对象的初始化,然后调用cry方法。这样太麻烦,我们可以通过动态创建对象并执行对象的方法来实现这个效果。下面,我们将开始动态创建所有实现。第一步,我们需要先获取到所有实现了IAnimal实例对象。现在,我们已经得到了所有实现IAnimal接口的实例对象。讲道理来说,我们就可以用Activator动态创建这些对象了。我们可以使用下面的代码那么,既然不能完全禁用缓存和编译优化,那如何解决可见性和有序性的问题呢?其实,合理的方案应该是按照需要禁用缓存和编译优化。什么是按需禁用缓存和编译优化呢?简单点来说,就是需要禁用的时候禁用,不需要禁用的时候就不禁用。有些人可能会说,这不废话吗?其实不然,我们继续向下看。

按照volatile会将v=true写入内存;线程B执行reader()方法,按照volatile,线程B会从内存中读取变量v,如果线程B读取到的变量v为true,那么,此时的变量x的值是多少呢??这个示例程序给人的直觉就是x的值为1,其实,x的值具体是多少和JDK的版本有关,如果使用的JDK版本低于1.5,则x的值可能为1,也可能为0。如果使用1.5及1.5以上版本的JDK,则x的值就是1。