Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/320.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
有没有Kotlin与Java';s Collections.synchronizedList?还是Kotlin不需要这个_Java_List_Concurrency_Kotlin_Thread Safety - Fatal编程技术网

有没有Kotlin与Java';s Collections.synchronizedList?还是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很少是您真正想要的:它适用

在Kotlin中编码,需要如下所述的线程安全列表:

Collections.kt似乎没有此功能。Kotlin的可变列表已经线程安全了吗?如果没有,我如何实现这一点

谢谢


如果我尝试使用Java列表,会出现一条警告消息“这个类不应该在Kotlin中使用…”

Java列表(和其他集合)在Kotlin中。因此,您可以使用
Collections.synchronizedList
,它获取并返回一个Kotlin
List
MutableList


当然,
synchronizedList
很少是您真正想要的:它适用于单个方法调用,但其他任何东西都必须手动同步。

为什么不直接使用Java呢?因为Kotlin完全可以与Java互操作,所以它可以很好地工作。Kotlin的可变列表不是线程安全的。@Shadov我不认为Kotlin的集合库与JDK的集合库是可互操作的。如果我尝试使用Java列表,会出现一条警告消息“这个类不应该在Kotlin中使用…”不确定这是否仅仅是一个建议或严重的方向,因为某些问题…@shmosel Yes,它是:。@阿列克谢·罗曼诺夫很有趣。那么这是否意味着您可以实际使用
集合
包装器呢?例如,它并不能真正阻止
ConcurrentModificationException
。您仍然可以在同时使用两个方法/函数从两个不同线程访问列表时获得它。因此,Kotlin中目前没有完全同步的集合?据我所知,在Kotlin或Java中不可能创建一个。它必须特定于您的项目,因为不同的项目需要不同的原子操作。