- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我对多线程非常陌生,但我想我或多或少有了总体的想法。我正在尝试以多线程方式填充矩阵,但我的代码显然不是线程安全的,我的矩阵中有重复的列,而定期填充矩阵时则不是这种情况。下面是一个示例代码块。请注意,reader 是一个 Scanner 对象,someOperationOnText(someText) 返回一个 int[100] 对象。
int[][] mat = new int[100][100];
ExecutorService threadPool = Executors.newFixedThreadPool(8);
for (int i = 0; i < 100; i++) {
Set<Integer>someText = new HashSet<>(reader.next());
int lineIndex = i;
threadPool.submit(() -> mat[lineIndex] = someOperationOnText(someText);
}
您是否明白这不是线程安全的任何原因?我似乎无法理解它,因为读取是在线程池之外完成的,我认为它不会有风险。
非常感谢您提供任何调试技巧!GRTS
最佳答案
在 submit
调用和执行程序线程池中的线程执行 lambda 之间存在一个happens-before。 (参见javadoc:“内存一致性影响”)。因此,这意味着 lambda 将看到 someText
、mat
和 lineIndex
的正确值。
唯一不线程安全的是在主线程中使用 mat
中的值的(隐含)代码。在执行器上调用 shutdown()
应该就足够了......尽管 javadoc 没有讨论 shutdown()
和 awaitTermination() 的内存一致性影响
.
(根据我对 ThreadPoolExecutor 的 code 的阅读,awaitTermination()
方法在池线程之间提供了一个happens-before (完成所有任务后)和方法的返回。发生之前是由于使用执行程序的主锁来同步池关闭。很难看出他们如何在没有这个(或同等的),所以它不仅仅是一个“实现工件”......我认为。)
关于Java:填充矩阵多线程,目前无线程安全,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48742360/
我希望任何人都可以在这个主题上为我提供帮助,即使这不是特定的编程问题。 我正在写一个单例论文,将MySQL与MongoDB进行比较,并且我想写一些有关Youtube的东西,因为该平台必须处理大量数据负
使用W3C validator验证HTML标记中的音频和视频时出现错误。 Validation Output: 1 Error Error Line 28, Column
我正在使用的功能是 function joinslots(freeTimings){ joined=[]; if(freeTimings.length==1){ joi
我的 Play 商店应用遇到问题。目前,一些日常应用统计数据出现延迟。我们希望尽快解决该问题。 最佳答案 请稍等,几天或更快后即可使用。有时他们的服务器重载,这就是原因。 关于google-play
使用外连接合并两个表。让我们说 df1 = ['产品ID', '名称'] df2 = ['用户ID', '产品ID', '使用情况'] 我尝试在 pandas 中使用带有合并功能的外连接。 pd.me
我正在做我的第一个表格计算,这是我在过去一天研究并想出的 jQuery。 顺便说一下,这只是我发现的让一切正常运行的方法,不一定是最好的方法。我的老板希望我使用 .blur() 而不是 .on(),但
Scalamock 拒绝了我的 mock 尝试,说它不支持超过 22 种方法。 原因是因为在我试图模拟的类中总共有超过 22 个方法(2 个是我的,20 多个是混合的(来自 Akka Json 支持)
应用商店里有一个叫 Touchpad 的应用,最后一次更新是在 11 月 29 日,其中包含一个新功能,支持“使用设备键盘上的 Siri 键向电脑发送文本”,我想知道是否有开放的 API Siri现在
目前(2009 年年中)GCJ 的现状如何? 最新消息是2007年的,所以我想知道是否有任何形式的进展?我记得不久前有一个可用的 lucene 编译版本,它使用 gcj 从 java 源代码编译它。目
我是第一次开始使用 OpenCL,我正在尝试优化缩减内核。内核采用大小为宽度像素的 float 正方形网格(数据表示灰度图像的亮度值)。内核对每一列求和并将每一列的总和返回到输出数组。 /* inpu
有一个正在运行的 github 线程(似乎已关闭并且已经完成了一堆提交/合并)。 尽管 VirtualBox 和 Vagrant 还不到 2 周大:*编辑:我仍然看到与/root/.my.cnf 相关
在 Android Studio 的 androidTest 文件夹中,我有几个测试用例,如下所示: Screenshot : Android Studio每个测试类执行后,应用程序退出并重新启动以进
目前正在开发一个包含 google maps 的应用程序,我愿意让它也适用于中国。 我知道中国的情况在过去几年发生了一些变化。所以我想知道:是否可以在中国的 Android 应用程序中使用谷歌地图?
我正在尝试使用 Cosmos DB RestAPI 列出本地(模拟器)实例上的数据库,但进展不够。有谁知道我在这里做错了什么...... var crypto = require("crypto");
有没有办法自定义 HTML 并以 html 格式发送通知电子邮件? 最佳答案 只需调整您的模板,例如 > https://github.com/pinax/django-notification/bl
我正在寻找一种方法来在类似于 Youtube 视频显示的 html5 视频上创建加载动画(引用: https://www.youtube.com/watch?v=5vcCBHVyG50 ) 我用 ca
我正在关注 Google Codelabs for instant app ,我正在尝试创建 topeka-ui(即时应用程序的 UI 功能模块)。 它告诉我为该 UI 模块启用这样的数据绑定(bin
我在 iPad 上使用 APSplitViewController 来获得两侧。在右侧工作时,我有一个位于 UINavigationController 内的 viewController。 当我以模
当前(但不常见),如果您调用以下 url,您会收到内部服务器错误: https://api.linkedin.com/v1/people/~/connections:(id,headline,pict
def cat_latin_word(text): """ convert the string in another form """ constant = "bcdfghj
我是一名优秀的程序员,十分优秀!