草庐IT

safe-publication

全部标签

java - 如何从 Velocity 模板访问对象的公共(public)字段

这是我的对象类:publicclassAddress{publicfinalStringline1;publicfinalStringtown;publicfinalStringpostcode;publicAddress(finalStringline1,finalStringtown,finalStringpostcode){this.line1=line1;this.town=town;this.postcode=postcode;}}我像这样将它添加到速度上下文中:AddresstheAddress=newAddress("123FakeSt","Springfield","S

java - 本地最终引用的安全发布

我知道您可以通过写入对final或volatile字段的引用来安全地发布一个非线程安全对象,该字段稍后将由另一个线程读取,前提是在发布时,创建对象的线程会丢弃对它的引用,这样它就不会再干扰或不安全地观察对象在其他线程中的使用。但是在这个例子中,没有显式的final字段,只有final局部变量。如果调用者放弃对unsafe的引用,这个发布是安全的吗?voidpublish(finalUnsafeunsafe){mExecutor.execute(newRunnable(){publicvoidrun(){//dosomethingwithunsafe}}}我找到了一些问答,比如thiso

java - 使用带有 CompletableFuture 的默认公共(public) fork/join 池进行长阻塞调用是不好的做法吗?

假设我有一个CompletableFuture,它包装了一个阻塞调用,例如使用JDBC查询后端。在这种情况下,由于我没有将任何执行程序服务作为参数传递给CompletableFuture.supplyAsync(),因此通过后端获取资源的实际阻塞工作应该由公共(public)Fork/Join池中的线程完成。不是吗badpractice让来自公共(public)FJpool的线程执行阻塞调用?我在这里的优势是我的主线程没有阻塞,因为我委托(delegate)异步运行的阻塞调用。检查正在阻塞的abtJDBC调用here.如果这个推断是正确的,为什么可以选择将默认的公共(public)FJ

java - 将公共(public)证书导入 keystore 时出错

我有来自CA的公共(public)证书。我想使用此证书创建JavaSSL连接。我提到了HowcanIusedifferentcertificatesonspecificconnections?和JavaSSLconnectionwithself-signedcertificatewithoutcopyingcompletekeystoretoclient.由此我了解到我需要将证书导入keystore。但是我还没有从CA收到任何keystore。我创建了一个keystore并尝试将公共(public)证书导入其中。但随后出现以下错误:keytool错误:java.lang.Excepti

java - 警告 : A HTTP GET method, public javax.ws.rs.core.Response... 抛出 org.codehaus.jettison.json.JSONException,不应消耗任何实体

我有以下GET方法,它无法将结果发送回客户端。/*@GETheredefines,thismethodwillprocessHTTPGETrequests.*/@GET@Path("/test/{name}/{status}")@Produces("application/json")publicResponseName(@PathParam("name,status")Stringname,Stringstatus)throwsJSONException{Stringtotal="100";...Stringresult=""+jsonObject;returnResponse.st

java - 在生产中使用公共(public)池的技巧

根据我得到的答案here,我开始给commons-pool一副严肃的样子。我最后一次使用它是在2003年左右,可能是1.1或1.2版本。它的主要用户,DBCP,被许多人认为是有缺陷的,应该避免。有没有人在生产中使用公共(public)池来编写你自己的池?最好使用的泳池类型是什么?我计划在其中存储客户端TCP套接字。是否有另一个通用池可以替代它? 最佳答案 Doesanyoneusescommonspoolinproductiontowritepoolofyourown?是的,我这样做了,并且池中包含TCP连接,就像您希望的那样。它是

java - 公共(public)日志配置 : use SimpleLog & set debug level

我有一个公共(public)日志配置问题。我希望它使用SimpleLog(而不是java.util.logging)并记录级别>=debug(而不是信息)的所有消息。 最佳答案 根据commons-loggingdocs,您应该能够通过将commons-logging.properties文件放置在类路径的根目录中,使用以下条目显式配置它以使用SimpleLog:org.apache.commons.logging.Log=org.apache.commons.logging.impl.SimpleLog然后您可以configure

java - 该方法只能设置 public/protected/private 之一

关闭。这个问题是notreproducibleorwascausedbytypos.它目前不接受答案。这个问题是由于错别字或无法再重现的问题引起的。虽然类似的问题可能是on-topic在这里,这个问题的解决方式不太可能帮助future的读者。关闭上个月。Improvethisquestion我正在实现一个接口(interface):publicinterfaceConsultant{//somedocumentationhereexplainingitshouldthrow3typesofexceptionsCellLocationsuggest(GameBoardgameBoard)

java - Scala:类中的公共(public)静态最终

我正在尝试在Scala中为Java的publicstaticfinal获得一个真正的等价物,以使用TwiP.在object中创建val对我不起作用,因为它是新生成的类Example$.class的一部分,并且TwiP无法从类Example.class访问它。这是我尝试移植到Scala的Java类的示例:publicstaticfinalString[]MY_STRINGS={"A","B","C"};@TestpublicvoidmyTest(@Values("MY_STRINGS")Stringstring){...}但我不知道如何将publicstaticfinal移植到Scala

java - Thread-Safe在java中是什么意思或者什么时候我们叫Thread-Safe?

我不理解这个概念。publicclassSomeName{publicstaticvoidmain(Stringargs[]){}}这是我的类(class)SomeName。现在这里的线程是什么。我们是否将类称为线程。当其他对象试图访问它的方法或成员时,我们是否将此类称为线程?当其他对象试图访问这个对象时,我们是否将这个类称为线程?当我们在java中将某些东西称为线程安全时,这意味着什么? 最佳答案 线程安全意味着避免一些问题。最常见也可能是最糟糕的称为线程锁。古老的类比是哲学家用餐的故事。他们非常有礼貌,不会在别人夹菜的时候伸出筷