最赞回答 / 南国漂泊
我自己的理解是,负载均衡,都是Framework提供的功能;它们提供简单的API而把复杂性隐藏起来;如果想要理解它们的原理,有可能还是得研究“多线程”和“并发”;各人关注点不同,无需反驳;你觉得有用就继续钻研,如果你觉得不掌握这些知识也够用(使用一些框架),那就好好研究下那些框架的用法;能解决问题就行了。
2017-09-14
最赞回答 / 是麥兜啊
while循环内判断的是所有的子线程是否都运行完了,如果是的话,继续下面的打印操作。如果不用synchronized或不加锁,程序运行时,有时候getNumber获得的值小于500,是因为volatile定义的变量不能保证原子性,所以会出现两个线程同时写number时,number只增加了1,没有增加2,所以影响到number变量最终的值不是500,而是499或498了。
2017-07-07
最新回答 / 慕移动9181930
嗯嗯这个可以有^_^...用框架吧还是,如果实在不想用,自己可为ie8及以下写一个类似方法来模拟getElementsByClassName()
2017-05-19
最赞回答 / RobinYGH
olatile本质是在告诉jvm当前变量在寄存器中的值是不确定的,需要从主存中读取,synchronized则是锁定当前变量,只有当前线程可以访问该变量,其他线程被阻塞住.volatile仅能使用在变量级别,synchronized则可以使用在变量,方法.volatile仅能实现变量的修改可见性,但不具备原子特性,而synchronized则可以保证变量的修改可见性和原子性.volatile不会造成线程的阻塞,而synchronized可能会造成线程的阻塞.volatile标记的变量不会被编译器优化,而s...
2017-02-21
最赞回答 / 洋__
呵呵,提问者没搞懂,大家不要被这个人带偏了,他才在误人子弟!估计提问者是想说内存可见了,怎么还会执行结果不一致呢?谁说过保证了内存可见性就保证执行结果是一致的??别人是内部线程类,视频里read()操作和write()操作加了synchronized是原子性的,但是又不保证read()和write()哪个先执行,所以会出现2个结果,如果是先read()执行,那么result就是0,如果write()先执行,那么result就是6。最后老师通过延时保证write()先执行,结果就是只有6。建议多学习,少抱怨...
2016-11-01