java - Java 线程安全问题
问题描述
我遇到了一个练习,我不是知道如何实现它的 Java 大师。我的目标是实现一个具有 getter 和 setter 方法的通用接口。在它的构造函数中,我必须放置一个实现这个通用接口的 s 对象。我们必须将这个对象存储在我们的类中,并使用这个类的 getter 和 setter 来实现我们的类 getter 和 setter(delegation)。
public class Threads<T> implements Buffer<T>{
Object s;
public Threads(Object s) { // we know, that It implements our Buffer interface
this.s=s;//i have no clue to what I should convert it.
}
synchronized public void put(T t) {
//i don't know how to call s's put method
}
synchronized public T get() {
//I don't know how to call s's get method.
}
}
我的问题是:我如何处理上面我在评论中指出我不知道该写什么的代码部分?
有任何想法吗?
解决方案
我认为您所指的“它”是s
参数。
您需要使用 type 声明s
参数和s
字段Buffer<T>
。像这样的东西:
public class Threads<T> implements Buffer<T>{
Buffer<T> s;
public Threads(Buffer<T> s) {
this.s = s;
}
synchronized public void put(T t) {
s.put(t);
}
synchronized public T get() {
return s.get();
}
}
至此,您已经为Buffer<T>
. 但是对于使用包装方法执行的操作,它只是线程安全的。
(这个Buffer<T>
类/接口一定是你自己设计的。标准java.nio.Buffer
类没有参数化,也没有提供get
andput
方法。子类java.nio.Buffer
确实有get
andput
方法,但是在type上没有关联等级。)
推荐阅读
- c# - 如何正确将位图 RGB 颜色转换为二维双数组?
- android - 如何让我的手机接受更多指纹
- android - android:片段中的嵌套滚动视图抛出异常
- mysql - 当我的应用什么都不做时,为什么我的 Google Cloud SQL (MySQL) 基础每秒会收到多个请求(写入)?
- html - 在可折叠的内部实现 CSS 复选框
- node.js - 检查是否已经登录,在其他应用程序中
- javascript - javascript google ocr 文本检测与 php
- twitter-bootstrap - Bootstrap:单击标题时折叠整个 tbody
- android - 如何在textview中显示地图中心的坐标?
- swift - 根据父 UITableVIew 的节索引设置嵌套 UITableView 的行数