草庐IT

non-volatile

全部标签

java - 对 volatile 的写入是 Java 中的内存屏障吗

我最近在一次演讲中听说,对volatile的写入会触发线程写入的每个变量的内存屏障。这真的正确吗?从JLS来看,似乎只有相关变量被清除,而其他变量则没有。有人知道什么是正确的吗?能否指出JLS中的具体位置? 最佳答案 是的,它会启动一个屏障。您可以阅读更多here.有4种类型,LoadLoadLoadStoreStoreStoreStoreLoad。至于你的问题FromtheJLS,itseemsthatonlythevariableconcernedgetsflushedout,butnotothers.Doesanybodykn

java - “Illegal attempt to map a non collection as a @OneToMany, @ManyToMany or @CollectionOfElements”

早上好Stackoverflow,我的问题是它给了我错误:FailedtocreatesessionFactoryobject.org.hibernate.AnnotationException:Illegalattempttomapanoncollectionasa@OneToMany,@ManyToManyor@CollectionOfElements:nl.scalda.pasimo.model.employeemanagement.EducationTeam.coachGroups你知道为什么吗?@OneToMany(cascade=CascadeType.ALL,target

java - 如何将 double 值设置为 "non-value"

我在一个对象中有两个双数据元素。有时它们设置了适当的值,有时则没有。当接收到它们的值的表单字段未填充时,我想将它们设置为某个值,告诉我在其余代码中表单字段为空。我无法将值设置为null,因为这会产生错误,有什么方法可以将它们设为“未定义”。PS。我不仅不确定这是否可行,而且也可能没有意义。但是,如果在这种情况下有一些最佳实践,我会很想听听。 最佳答案 两个明显的选择:使用Double代替double。然后你可以使用null,但是你已经大大改变了所涉及的内存模式。使用“非数字”(NaN)值:doubled=5.5;System.out

Java Non-Blocking and Asynchronous IO with NIO & NIO.2 (JSR203) - Reactor/Proactor 实现

所以我在这里阅读我最喜欢的软件模式书籍之一(面向模式的软件架构-并发和网络对象的模式),特别是关于Proactor/Reactor异步IO模式的部分。我可以看到通过使用可选channel,我可以很容易地实现Reactor风格的异步IO机制(并且已经这样做了)。但是,我看不到如何使用非阻塞写入实现适当的Proactor机制。这是利用操作系统管理的非阻塞写功能。操作系统特定调用支持的功能,如GetQueuedCompletionStatuswin32下。我确实看到Java7使用异步完成处理程序为NIO带来了一些更新(这似乎是正确的方向)。话虽这么说...鉴于缺乏对操作系统管理的异步操作(特

java - AtomicInteger 和 volatile

这个问题在这里已经有了答案:Whatisthedifferencebetweenatomic/volatile/synchronized?(7个回答)关闭3年前。我知道volatile允许可见性,AtomicInteger允许原子性。那么如果我使用一个volatileAtomicInteger,是不是意味着我不必再使用任何同步机制了?例如。classA{privatevolatileAtomicIntegercount;voidsomeMethod(){//dosomethingif(count.get()这是线程安全的吗? 最佳答案

java - "Non-static variable this cannot be referenced from a static context"创建对象时

我编写了以下代码来测试Java中类和对象的概念。publicclassShowBike{privateclassBicycle{publicintgear=0;publicBicycle(intv){gear=v;}}publicstaticvoidmain(){Bicyclebike=newBicycle(5);System.out.println(bike.gear);}}为什么在编译过程中会出现以下错误?ShowBike.java:12:non-staticvariablethiscannotbereferencedfromastaticcontextBicyclebike=ne

java - 错误 : base operand of ‘->’ has non-pointer type ‘JNIEnv’

#include#includeJNIEnv*create_vm(){JavaVM*jvm;JNIEnv*env;JavaVMInitArgsargs;JavaVMOptionoptions[1];/*ThereisanewJNI_VERSION_1_4,butitdoesn'taddanythingforthepurposesofourexample.*/args.version=JNI_VERSION_1_2;args.nOptions=1;options[0].optionString="-Djava.class.path=/home/test/workspace/pankajs

java - 何时使用 volatile 和 synchronized

我知道有很多关于这个的问题,但我还是不太明白。我知道这两个关键字的作用,但我无法确定在某些情况下使用哪个关键字。这里有几个例子,我试图确定哪个是最好用的。示例1:importjava.net.ServerSocket;publicclassSomethingextendsThread{privateServerSocketserverSocket;publicvoidrun(){while(true){if(serverSocket.isClosed()){...}else{//Shouldthisblockusesynchronized(serverSocket)?//Dostuff

java - Spring 数据 JPA : How can Query return Non- Entities Objects or List of Objects?

我在我的项目中使用SpringDataJPA。我正在玩数百万张唱片。我有一个要求,我必须为各种表获取数据并构建一个对象,然后在UI上绘制它。现在如何在我的Spring数据存储库中实现这一点。我读过它可以通过命名原生查询来实现。Ifthenamednativequerydoesnotreturnanentityoralistofentities,wecanmapthequeryresulttoacorrectreturntypebyusingthe@SqlResultSetMappingannotation.但是当我尝试使用@SqlResultSetMapping时,它正在使用另一个en

java - 为什么 Object 成员变量在 Java 中不能既是 final 又是 volatile?

如果在一个类中我有一个ConcurrentHashMap实例,该实例将被多个线程修改和读取,我可能会这样定义:publicclassMyClass{privatevolatileConcurrentHashMapmyMap=newConcurrentHashMap();...}将final添加到myMap字段会导致错误提示我只能使用final或volatile。为什么不能两者兼得? 最佳答案 volatile只与变量本身的修改有关,与它所引用的对象无关。有一个finalvolatile字段是没有意义的,因为final字段不能被修改。