gpt4 book ai didi

java - 在 Java 中的线程之间传递变量

转载 作者:行者123 更新时间:2023-12-03 21:29:46 24 4
gpt4 key购买 nike

我在主类中创建了 10 个相同的线程(仅通过主键从 1 到 10 区分)。在每个线程中,我需要读取前一个线程中的字段,即在线程 5 中,我需要在线程 4 中读取该字段。问题是我该怎么做?

public class Player extends Thread {

private Integer playerNumber;

public char lastDigit;

public Player(Integer playerNumber) {
super();
this.playerNumber = playerNumber;
}

public synchronized char getDigit(){
return this.lastDigit;
}

public synchronized void setDigit(char digit){
massage += digit;
this.lastDigit = digit;
try {
Thread.sleep(1);
} catch (InterruptedException e) {
e.printStackTrace();
}
}

public void run(){

}

我需要读取 lastDigit 字段。

提前致谢:)

最佳答案

很多选项 :) 默认情况下,java 集合不同步:

您可以在静态变量/类中创建一个 LinkedBlockingQueue:

您可以使用以下内容包装许多 java 集合之一:

  • Collections.synchronizedMap(..)
  • 集合.synchronizedList(..)
  • 集合.synchronizedSet(..)

如果您不介意一些复杂性,但担心 GC 开销,请使用 Exchanger(我会根据您的情况推荐它):

如果您真的想全力以赴并且性能是一个主要问题,您可以使用 Disrupter 框架(不是为了虚张声势):

关于java - 在 Java 中的线程之间传递变量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9641731/

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