【发布时间】:2023-03-03 13:13:01
【问题描述】:
我必须根据字符串实现一些同步算法。我的意思是两个线程必须同步,并且这对线程都依赖于一个字符串值(一对线程用于字符串 A,一对线程用于字符串 B,依此类推)。
在 java 中,我可以使用方法 intern 来实现算法,以获取两个线程共享的单个锁对象。 Java 将所有 litteral 提取到 jvm 内置池中,interne 允许将动态创建的任何字符串转换为池中的 litteral。
我明白there is also a pooling mechanism in Objective C。
但是在 Java 中是否有任何与 intern() 等价的方法,即一种将普通字符串从字符串常量池转换为乱码字符串的方法。获取对这个唯一 String litteral 的引用,以便我的两个线程可以在同一个对象上同步。
我知道有一些解决方法,但它们都暗示了很多我想避免的字符串比较。 (虽然我相信实习生会这样做,但以一种优化的方式......)
用更一般的术语解释我的问题:我想避免使用将字符串映射到锁的字典。多亏了 intern,Java 允许我这样做,因为 String litteral (pooled) 将成为锁。有没有等效的或者我必须使用这张地图。
谢谢各位, 斯蒂芬
【问题讨论】:
-
我认为在字符串文字上同步不是一个好主意。在字符串变量上可以,但在文字上,我不知道......但也许我错了。
-
可能值得描述一下您的更高级别目标。一般来说,你想达到什么目的?您的问题听起来像是您已经为可能通过 Objective-C/Cocoa 中的其他方式更好地解决的问题制定了一个非常具体的解决方案。
标签: java objective-c string optimization synchronization