草庐IT

internal_lock

全部标签

java - String.intern() 线程安全有保证吗?

是否有任何文件证明String.intern()是线程安全的?javadoc提到了它但没有直接解决它:Returnsacanonicalrepresentationforthestringobject.Apoolofstrings,initiallyempty,ismaintainedprivatelybytheclassString.Whentheinternmethodisinvoked,ifthepoolalreadycontainsastringequaltothisStringobjectasdeterminedbytheequals(Object)method,thenth

Java 并发 : lock effiency

我的程序有100个线程。每个线程都这样做:1)如果arrayList为空,则向其添加具有特定属性的元素2)如果arrayList不为空,遍历arrayList中找到的元素,如果找到合适的元素(匹配某些属性),获取并移除arrayList这里的问题是,当一个线程遍历arrayList时,其他99个线程正在等待arrayList上的锁。如果我希望所有100个线程都在无锁条件下工作,您会给我什么建议?所以他们都有工作要做?谢谢 最佳答案 你看过sharedvsexclusive了吗?锁定?您可以在列表上使用共享锁,然后在列表元素上使用“已

java - 网络 Swing 游戏中的多线程 : using invokeLater vs locks

我正在编写一个简单的自上而下的太空游戏,并且正在扩展它以允许通过网络与多个玩家一起玩。我读了很多书,但这是我第一次这样做,我希望能得到一些关于选择合理设计的建议。我的GUI是使用Swing编写的。每秒30次,计时器触发,并根据内存中gameWorld对象中的数据重新绘制我的GUI(本质上是带有位置的船舶和射弹列表等)。游戏世界的物理更新也是使用这个计时器进行的。因此,对于单人游戏实现,一切都发生在EDT上,并且效果很好。现在,我有单独的线程处理来自其他玩家的传入数据包。我想根据这些数据包包含的内容更新我的gameWorld对象中的数据。我的问题是,我应该使用invokeLater来进行

java - 更改 com.sun.org.apache.xml.internal.serialize.XMLSerializer & com.sun.org.apache.xml.internal.serialize.OutputFormat

使用com.sun.org.apache.xml.internal.serialize.XMLSerializer和com.sun.org.apache.xml.internal.serialize.OutputFormat导致使用java1.6编译时出现一些错误。我找到的解决方案是在添加xerces后使用org.apache.xml.serialize.XMLSerializer和org.apache.xml.serialize.OutputFormat。问题是这些类已被弃用。在不触及代码的情况下,我可以使用什么来替换它们?谢谢这是我使用的依赖项:xercesxercesImpl2.

c# - Java 相当于 C#'s "internal”

这个问题在这里已经有了答案:IsthereanythinglikeanInternalclassinJava?(8个答案)关闭5年前。在Java中,通过将访问修饰符保留为默认修饰符(空白),字段变得只能由同一包中的成员访问。然而,这并不能阻止其他人在同一个包中声明他们的类,然后从那里访问“默认”字段。Java中有没有一种方法可以使C#字段等同于internal。也就是说,当我构建我的库(JAR文件)时,其他人无法从JAR外部访问这些字段吗?即使在与我的类(class)相同的包中声明他们的类(class)。这是我在我的图书馆中的声明:packagecom.my.package;class

java - IllegalArgumentException : com. sun.xml.internal.messaging.saaj.soap.LocalStrings != com.sun.xml.messaging.saaj.soap.LocalStrings

在我的网络应用程序中,我正在联系一个网络服务(使用JAX-WS),但我收到以下错误:java.lang.ExceptionInInitializerErroratcom.sun.xml.ws.message.AttachmentUnmarshallerImpl.(AttachmentUnmarshallerImpl.java:55)atcom.sun.xml.ws.client.sei.ResponseBuilder$DocLit.readResponse(ResponseBuilder.java:500)atcom.sun.xml.ws.client.sei.SyncMethodHa

java - 与 Java 中的同步块(synchronized block)相比,新的 Lock 接口(interface)有什么优势?

与Java中的同步块(synchronizedblock)相比,新的Lock接口(interface)有何优势?您需要实现一个高性能缓存,允许多个读取器但单个写入器保持完整性,您将如何实现它? 最佳答案 锁的优点是让他们公平是可能的可以让线程在等待Lock对象时响应中断。可以尝试获取锁,但如果无法获取锁,则立即或超时后返回可以在不同的范围内以不同的顺序获取和释放锁请注意,这在javadocofLock中有解释。及其子类。可以使用ConcurrentMap实现高性能缓存。 关于java-与

java - 在使用 Gradle 构建的 Groovy 项目中抑制 Java 警告 "Unsafe is internal proprietary API"

我有一个使用Gradle(1.8)构建的Groovy项目,其中一些Java类报告以下编译器警告消息:warning:UnsafeisinternalproprietaryAPIandmayberemovedinafuturereleaseimportsun.misc.Unsafe;有没有办法抑制该错误消息?我找到了一些建议使用javac编译器选项-XDignore.symbol.file的答案,但在使用Groovy插件时我无法将其应用到Gradle构建中。有什么解决办法吗?谢谢 最佳答案 将以下内容添加到您的gradle.build

java - jvm字符串池intern中有多少个字符串

我正在分析一个应用程序,使用intern输入字符串确实很有帮助。我想要找到的是用于对象池的好数字,因此我不会有性能损失。我怎么知道有多少字符串被插入了实习生池?我正在运行一些生产跟踪,我无法真正计算输入。JVM是否为此提供了一个API? 最佳答案 从JDK7开始,您可以使用-XX:+PrintStringTableStatisticsJVM标志来打印有关字符串表大小的信息,例如桶的数量和桶的大小。您还可以通过调用命令jmap-heap*process_id*来使用jmap工具,该命令将在末尾显示驻留的字符串数和总大小(还需要JDK7

java - ConcurrentHashMap 中 String intern 方法的去重

我看过JavaDays的一个代码,作者说这种有概率的方法对于存储字符串非常有效,类似于Stringintern方法publicclassCHMDeduplicator{privatefinalintprob;privatefinalMapmap;publicCHMDeduplicator(doubleprob){this.prob=(int)(Integer.MIN_VALUE+prob*(1L();}publicTdedup(Tt){if(ThreadLocalRandom.current().nextInt()>prob){returnt;}Texist=map.putIfAbse