gpt4 book ai didi

Java多线程: redundant to use java. util.concurrent类中的同步方法?

转载 作者:行者123 更新时间:2023-12-01 11:37:14 24 4
gpt4 key购买 nike

我有一个包含以下类级别变量的类:

private LinkedBlockingQueue<Integer> inputQueue;
private StringBuffer textBuffer;
private int currentIndex;
private String[] p;
private List<String[]> pageList;
private int cursor;

该类有一个方法 setInput(),可以由多个线程访问。该方法像这样更改上述所有变量

public void setInput(String s) {
p[cursor] = input;
cursor++;
if (cursor == 1000) {
// UI logic
textBuffer.setLength(0);
p = new String[];
cursor = 0;
}
// Some other logic here

pageList.add(p);
currentIndex++;
if (!inputQueue.offer(currentIndex)) {
throw new RuntimeException();
}
}

这些变量可以被类中的其他代码片段读取,但只能在 setInput() 中修改。并且类中的所有其他方法都不存在线程安全问题。换句话说,它们确保被主线程调用。在这种情况下,如果我将synchronized关键字放在方法setInput()之前,那么我是否需要使用java.util.concurrent中的LinkedBlockingQueue?当方法同步时,这些变量是否保证线程安全?谢谢。

最佳答案

为了线程安全,所有访问字段(读取和写入)的方法都应该同步

关于Java多线程: redundant to use java. util.concurrent类中的同步方法?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29852600/

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