多线程 VOLITIEL 关键词求助~

a12939026 2013-01-26 10:32:44
谁能给个建议的DEMO呢。 用MAIN 方法执行。 某个变量加了VOLITIEL就正确输出 不加 就错误了。
谁能给做个建议DEMO , 谢谢啦~ 网上找的 说的一大堆 就是没见DEMO 不好理解。。
...全文
320 14 打赏 收藏 转发到动态 举报
写回复
用AI写文章
14 条回复
切换为时间正序
请发表友善的回复…
发表回复
AndersZhuo123 2013-04-06
  • 打赏
  • 举报
回复
http://www.ibm.com/developerworks/cn/java/j-jtp06197.html#2.0 这个对你应有用……
a12939026 2013-01-30
  • 打赏
  • 举报
回复
饿, 辛苦你了。 我自己再想想。
AndersZhuo123 2013-01-29
  • 打赏
  • 举报
回复
引用 11 楼 a12939026 的回复:
引用 10 楼 Anders_Zhuo 的回复:引用 8 楼 a12939026 的回复: 引用 7 楼 Anders_Zhuo 的回复:这个网上太多了,不过个人觉得一定要弄白线程与内容中的VOLITIEL有时不会一样,这一点 你是说 synchronized和volitiel的区别么? 这个我知道。 关于我说的例子,能帮忙找一个DEMO么。 我怎么觉得找不到。。……
哥们啊 , 我实在是写不出来了。憋了快一个小时了 我能明白那意思 就是不知道怎么写 哎 哎 哎 哎 上一个伪代码 public class BackgroundFloobleLoader { public volatile Flooble theFlooble; public void initInBackground() { // do lots of stuff theFlooble = new Flooble(); // this is the only write to theFlooble } } public class SomeOtherClass { public void doWork(){ while (true) { // do some stuff... // use the Flooble, but only if it is ready if (floobleLoader.theFlooble != null) doSomething(floobleLoader.theFlooble); } } } } } 如果 theFlooble 引用不是 volatile 类型,doWork() 中的代码在解除对 theFlooble 的引用时,将会得到一个不完全构造的 Flooble。 该模式的一个必要条件是:被发布的对象必须是线程安全的,或者是有效的不可变对象(有效不可变意味着对象的状态在发布之后永远不会被修改)。volatile 类型的引用可以确保对象的发布形式的可见性,但是如果对象的状态在发布后将发生更改,那么就需要额外的同步。 看了上面的不知道你明白了没 还有我找出了一个公司代码: public class xxx implements xxxx{ // String to show the location this subscriber is listening to. private String location; // The application class. We need this so we can insert any events we create private LogisticsApp app; /**JMS Destination to send messages to*/ private volatile Destination destination; /**JMS Template to use to send messages*/ private volatile JmsTemplate template; public void setDestination(Destination destination) { this.destination = destination; } 这个是一个公司的内部代码 用到了volatile 关键字 至于为什么,我没看出来啊!! 算我食言了,我是真的写不出来
a12939026 2013-01-29
  • 打赏
  • 举报
回复
引用 10 楼 Anders_Zhuo 的回复:
引用 8 楼 a12939026 的回复: 引用 7 楼 Anders_Zhuo 的回复:这个网上太多了,不过个人觉得一定要弄白线程与内容中的VOLITIEL有时不会一样,这一点 你是说 synchronized和volitiel的区别么? 这个我知道。 关于我说的例子,能帮忙找一个DEMO么。 我怎么觉得找不到。。 哦 这样 晚上下班回来 我写一个看看。,不过不知道能不能写出来……
话,太感谢了。
AndersZhuo123 2013-01-29
  • 打赏
  • 举报
回复
引用 8 楼 a12939026 的回复:
引用 7 楼 Anders_Zhuo 的回复:这个网上太多了,不过个人觉得一定要弄白线程与内容中的VOLITIEL有时不会一样,这一点 你是说 synchronized和volitiel的区别么? 这个我知道。 关于我说的例子,能帮忙找一个DEMO么。 我怎么觉得找不到。。
哦 这样 晚上下班回来 我写一个看看。,不过不知道能不能写出来 ……我尽力
龙四 2013-01-29
  • 打赏
  • 举报
回复
引用 8 楼 a12939026 的回复:
引用 7 楼 Anders_Zhuo 的回复:这个网上太多了,不过个人觉得一定要弄白线程与内容中的VOLITIEL有时不会一样,这一点 你是说 synchronized和volitiel的区别么? 这个我知道。 关于我说的例子,能帮忙找一个DEMO么。 我怎么觉得找不到。。
找不到很正常,就像JVM规范允许所有JVM实现将long的读写分成两次32位,但几乎所有主流JVM都是将其实现成原子的读写,所以,如果几乎找不到一款JVM能出现这个问题
a12939026 2013-01-28
  • 打赏
  • 举报
回复
引用 7 楼 Anders_Zhuo 的回复:
这个网上太多了,不过个人觉得一定要弄白线程与内容中的VOLITIEL有时不会一样,这一点
你是说 synchronized和volitiel的区别么? 这个我知道。 关于我说的例子,能帮忙找一个DEMO么。 我怎么觉得找不到。。
AndersZhuo123 2013-01-28
  • 打赏
  • 举报
回复
这个网上太多了,不过个人觉得一定要弄白线程与内容中的VOLITIEL有时不会一样,这一点
龙四 2013-01-28
  • 打赏
  • 举报
回复
引用 3 楼 a12939026 的回复:
引用 1 楼 ticmy 的回复:http://www.ticmy.com/?p=5 谢谢您。 我试验过,用-server 做参数 确实会死住。 而且根据网上的说法“官方说法是自动探测 "server class". 该网页介绍,如果当前机器有两个或以上 CPU,并且有2GB以上内存,那么就认为这个机器是 server-class machine” 我应该是默认选用……
只能说也许有,client模式下JVM对程序所做的优化比server模式少得多
bluemoby 2013-01-28
  • 打赏
  • 举报
回复
VOLITIEL只是在规范中定义,设置后保证不出问题,也没有说不使用的时候就会出错,所以不使用是否出错跟Java虚拟机的实现有关系,你可以多找几个版本的JDK试试。
a12939026 2013-01-28
  • 打赏
  • 举报
回复
还有哪位哥知道这个问题么。。。
龙四 2013-01-27
  • 打赏
  • 举报
回复
更多并发内容:http://ifeve.com
龙四 2013-01-27
  • 打赏
  • 举报
回复
a12939026 2013-01-27
  • 打赏
  • 举报
回复
引用 1 楼 ticmy 的回复:
http://www.ticmy.com/?p=5
谢谢您。 我试验过,用-server 做参数 确实会死住。 而且根据网上的说法“官方说法是自动探测 "server class". 该网页介绍,如果当前机器有两个或以上 CPU,并且有2GB以上内存,那么就认为这个机器是 server-class machine” 我应该是默认选用SERVER模式的么。 但是这个问题就先不关注了。 还没开始研究JVM的知识。 就是想问下 如果保证在CLIENT状态下执行, 这个VOLITIEL关键词的缺失可能会带来什么问题呢?

67,515

社区成员

发帖
与我相关
我的任务
社区描述
J2EE只是Java企业应用。我们需要一个跨J2SE/WEB/EJB的微容器,保护我们的业务核心组件(中间件),以延续它的生命力,而不是依赖J2SE/J2EE版本。
社区管理员
  • Java EE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧