gpt4 book ai didi

java - java 子线程数组访问

转载 作者:行者123 更新时间:2023-11-30 07:00:14 26 4
gpt4 key购买 nike

我有一个 SinglePDFPage 对象数组,这些只是包装对象,每个对象都包含一个 WritableImage 对象。

在子线程内的循环中填充它时,我仍然可以访问线程外部的数组。从字面上看是同时的。我正在渲染 WritableImage 对象,每个对象包含一个 PDF 页面。每次大约需要半秒。

在填充该数组时,我可以访问它并在子线程循环到达之前预渲染某个页面。

我已经阅读了 volatile 关键字和同步集合;我认为如果您有由不同线程访问的对象,则需要这样做。我认为通常对象会写入线程存储?如果是这样,为什么我可以在没有任何锁定或同步的情况下访问它们?

所描述的模式是“线程安全的”吗?

最佳答案

这个问题有点抽象,所以我会在抽象层面上解决。

线程安全并不是指跨线程访问数据的能力。它指的是安全地这样做,也就是说,其他线程无法查看无效状态的数据。您的代码不是线程安全的,这一事实表明其他线程可以在数组完全填充之前看到您的数组。 volatile 同步、并发集合和实用程序是帮助您控制对线程之间共享状态的访问的工具。

关于java - java 子线程数组访问,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41049714/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com