- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我有一个场景,我必须连接到虚拟中心并获取数据。我已经实现了一个单例类,这样两个线程就不能同时访问 VC,因为它会产生并发访问问题。我的代码如下:
public class Connector {
private static Connector instance ;
private Connector(String urlStr, String username, String password) {
connect(urlStr, username, password);
}
public static synchronized Connector getInstance(String urlStr, String username, String password) {
if (instance == null){
instance = new Connector(urlStr,username,password);
System.out.println("creating instance");
}
return instance ;
}
public void connect(String urlStr, String username, String password) {
ClassLoader cl = Thread.currentThread().getContextClassLoader();
try {
//code to connect to VC
}
} catch (RuntimeException e) {
connectException = e;
} finally {
Thread.currentThread().setContextClassLoader(cl);
}
}
public void disconnect() throws RuntimeFault, RemoteException {
//code for disconnect
}
}
}
我通过以下方式从另一个类中调用了它:
Connector c = Connector.getInstance(dburl, dbuser, dbpass);
c.connect(dburl, dbuser, dbpass);
//code for getting data
c.disconnect();
现在,如果我同时有 2 个请求从虚拟中心获取数据,其中一个会失败并提示“ session 未通过身份验证”。你能帮助我们用更好的方法来处理这个问题吗?由于始终使用相同的实例,我们如何区分它是否是不同的虚拟中心。
最佳答案
你的序列
不是原子的,这意味着有可能
构建您的类,使客户端不会连接失败、断开连接失败或与另一个客户端交错操作。
您的 API 可以允许想要使用连接的代码传入连接时使用连接的对象,并返回使用该连接的结果:
public interface ConnectionTask<T> {
public T useConnection(Connection c);
}
然后代替 getInstance
编写一个 useConnection
public synchronized <T> T useConnection(ConnectTask<T> c) {
connect();
try {
return c.useConnection(this);
} finally {
disconnect();
}
}
并使connect
和disconnect
private
以便客户端不能滥用它们。
关于java - 从另一个类访问的单例类,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12939671/
我最近购买了《C 编程语言》并尝试了 Ex 1-8这是代码 #include #include #include /* * */ int main() { int nl,nt,nb;
早上好!我有一个变量“var”,可能为 0。我检查该变量是否为空,如果不是,我将该变量保存在 php session 中,然后调用另一个页面。在这个新页面中,我检查我创建的 session 是否为空,
我正在努力完成 Learn Python the Hard Way ex.25,但我无法理解某些事情。这是脚本: def break_words(stuff): """this functio
我是一名优秀的程序员,十分优秀!