有没有Kotlin与Java';s Collections.synchronizedList?还是Kotlin不需要这个
在Kotlin中编码,需要如下所述的线程安全列表: Collections.kt似乎没有此功能。Kotlin的可变列表已经线程安全了吗?如果没有,我如何实现这一点 谢谢有没有Kotlin与Java';s Collections.synchronizedList?还是Kotlin不需要这个,java,list,concurrency,kotlin,thread-safety,Java,List,Concurrency,Kotlin,Thread Safety,在Kotlin中编码,需要如下所述的线程安全列表: Collections.kt似乎没有此功能。Kotlin的可变列表已经线程安全了吗?如果没有,我如何实现这一点 谢谢 如果我尝试使用Java列表,会出现一条警告消息“这个类不应该在Kotlin中使用…” Java列表(和其他集合)在Kotlin中。因此,您可以使用Collections.synchronizedList,它获取并返回一个KotlinList或MutableList 当然,synchronizedList很少是您真正想要的:它适用
如果我尝试使用Java列表,会出现一条警告消息“这个类不应该在Kotlin中使用…” Java列表(和其他集合)在Kotlin中。因此,您可以使用
Collections.synchronizedList
,它获取并返回一个KotlinList
或MutableList
当然,
synchronizedList
很少是您真正想要的:它适用于单个方法调用,但其他任何东西都必须手动同步。为什么不直接使用Java呢?因为Kotlin完全可以与Java互操作,所以它可以很好地工作。Kotlin的可变列表不是线程安全的。@Shadov我不认为Kotlin的集合库与JDK的集合库是可互操作的。如果我尝试使用Java列表,会出现一条警告消息“这个类不应该在Kotlin中使用…”不确定这是否仅仅是一个建议或严重的方向,因为某些问题…@shmosel Yes,它是:。@阿列克谢·罗曼诺夫很有趣。那么这是否意味着您可以实际使用集合
包装器呢?例如,它并不能真正阻止ConcurrentModificationException
。您仍然可以在同时使用两个方法/函数从两个不同线程访问列表时获得它。因此,Kotlin中目前没有完全同步的集合?据我所知,在Kotlin或Java中不可能创建一个。它必须特定于您的项目,因为不同的项目需要不同的原子操作。