几点
- 您不需要自动装箱
int
值并且包装字符串文字是没有意义的。
- 您需要将泛型类型保留在左侧,但首选使用接口。
- 您只会使用 Comparable 来比较对象。但是,您通常无法比较不同类型的对象,因此这更令人困惑而不是有用。
.
Map<Integer, Object> table = new ConcurrentHashMap<>();
table.put(1, "nodata");
table.put(2, 23);
如果您需要 ConcurrentMap 提供的其他方法,您可能需要以下内容。
ConcurrentMap<Integer, Object> table = new ConcurrentHashMap<>();
这似乎是一个对象拒绝的情况。使用 Object 可能是更好的选择。
class MyData {
private String text;
private int number;
MyData(String text, int number) {
this.text = text;
this.number = number;
}
public synchronized String getText() {
return text;
}
public synchronized void setText(String text) {
this.text = text;
}
public synchronized int getNumber() {
return number;
}
public synchronized void setNumber(int number) {
this.number = number;
}
}
MyData data = new MyData("nodata", 23);
对于相同的并发版本。
class MyData {
private final AtomicReference<String> text;
private final AtomicInteger number;
MyData(String text, int number) {
this.text = new AtomicReference<String>(text);
this.number = new AtomicInteger(number);
}
public String getText() {
return text.get();
}
public void setText(String text) {
this.text.set(text);
}
public int getNumber() {
return number.get();
}
public void setNumber(int number) {
this.number.set(number);
}
}