Java:线程:将带有 ID 的元素添加到不同线程的列表中

FMF

我有不同的线程,我想从中调用一个函数,该函数通过查找当前最高 ID、增加它并将新对象(具有增加的 ID)插入列表中来将元素添加到列表中。

我是否需要关心,当两个线程同时调用该函数时,两个对象将具有相同的 ID 还是 JVM 会处理这个问题

内森·休斯

如果您使用 ++ 或 += 1 之类的操作,则这些操作需要多个步骤才能工作,并且如果这些步骤与该字段上的另一个线程调用的操作交织在一起,则这些线程可能会干扰 esch other 并且该字段可能会获得一些意外的值.

此外,查找最高 id 并在列表中插入新值的过程也不是您希望其他线程干扰的。您需要在找到高值之前获取锁并保持它直到您完成插入新条目。

如果您使用 Atomic 类,则它们的方法不会受到干扰(这就是 Atomic 的意思)。使用 AtomicLong.incrementAndGet() 将导致每次调用返回下一个 long 值。

最好使用原子变量或数据库序列,而不是反复搜索最高 id(并且必须锁定)。在使用方法生成 id 的应用程序中,id 生成可能是一个瓶颈。

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

我如何从Vala中的不同线程添加到GLib.List

来自分类Dev

访问不同线程中的不同列表元素

来自分类Dev

如何将带有ID标签的图例添加到我的代码中

来自分类Dev

Java列表从列表中的不同线程收集结果

来自分类Dev

是否可以将ID添加到已经具有ID的元素中

来自分类Dev

填充在不同线程中的列表在调用者线程中显示为空-Java

来自分类Dev

将带有元素的对象添加到数组

来自分类Dev

使用3个线程将元素添加到5个ArrayList中:arraylist大小的总和始终不同

来自分类Dev

将带有标题的节添加到具有可扩展行的SwiftUI列表中

来自分类Dev

如何在Javascript中将带有文本的字幕元素添加到div中

来自分类Dev

将带有列表的字符串添加到多行文本框中

来自分类Dev

将带有列表的字符串添加到多行文本框中

来自分类Dev

tkinter - 将带有字典的嵌套列表中的数据添加到树视图

来自分类Dev

Java中带有for循环的多线程

来自分类Dev

在Laravel 5中将带有表名和ID的表联接

来自分类Dev

将带有文本的ID保存在表格视图单元格中

来自分类Dev

在Laravel 5中将带有表名和ID的表联接

来自分类Dev

Java 将带有计算的列添加到 CSV 文件

来自分类Dev

如何在数组中搜索元素?以及如何将带有声明方法的变量添加到数组列表中?

来自分类Dev

从JavaFX中的不同线程更新UI

来自分类Dev

QSqlDatabase不同线程中的并发查询

来自分类Dev

不同线程中SharedPreference的访问值

来自分类Dev

在不同线程中运行任务

来自分类Dev

QSqlDatabase不同线程中的并发查询

来自分类Dev

从不同线程中的QFile读取

来自分类Dev

在 Java 中获取带有 id 的 CardView

来自分类Dev

如何将自动增量 ID 列添加到带有数据的表中

来自分类Dev

在没有类或ID的情况下,将类添加到表头元素中以直接选择它们

来自分类Dev

如何将带有参数的方法传递给线程以执行?

Related 相关文章

  1. 1

    我如何从Vala中的不同线程添加到GLib.List

  2. 2

    访问不同线程中的不同列表元素

  3. 3

    如何将带有ID标签的图例添加到我的代码中

  4. 4

    Java列表从列表中的不同线程收集结果

  5. 5

    是否可以将ID添加到已经具有ID的元素中

  6. 6

    填充在不同线程中的列表在调用者线程中显示为空-Java

  7. 7

    将带有元素的对象添加到数组

  8. 8

    使用3个线程将元素添加到5个ArrayList中:arraylist大小的总和始终不同

  9. 9

    将带有标题的节添加到具有可扩展行的SwiftUI列表中

  10. 10

    如何在Javascript中将带有文本的字幕元素添加到div中

  11. 11

    将带有列表的字符串添加到多行文本框中

  12. 12

    将带有列表的字符串添加到多行文本框中

  13. 13

    tkinter - 将带有字典的嵌套列表中的数据添加到树视图

  14. 14

    Java中带有for循环的多线程

  15. 15

    在Laravel 5中将带有表名和ID的表联接

  16. 16

    将带有文本的ID保存在表格视图单元格中

  17. 17

    在Laravel 5中将带有表名和ID的表联接

  18. 18

    Java 将带有计算的列添加到 CSV 文件

  19. 19

    如何在数组中搜索元素?以及如何将带有声明方法的变量添加到数组列表中?

  20. 20

    从JavaFX中的不同线程更新UI

  21. 21

    QSqlDatabase不同线程中的并发查询

  22. 22

    不同线程中SharedPreference的访问值

  23. 23

    在不同线程中运行任务

  24. 24

    QSqlDatabase不同线程中的并发查询

  25. 25

    从不同线程中的QFile读取

  26. 26

    在 Java 中获取带有 id 的 CardView

  27. 27

    如何将自动增量 ID 列添加到带有数据的表中

  28. 28

    在没有类或ID的情况下,将类添加到表头元素中以直接选择它们

  29. 29

    如何将带有参数的方法传递给线程以执行?

热门标签

归档