我希望通过一次打开FTP连接来优化性能。可以吗?
我正在做,
public void method1()
{
for(loop)
{
List li = someList;
method2(li); //Here I am calling this method in loop. This method has code for FTP connection. So for every iteration it is opening FTP connection in method2().
}
}
public void method2(List li)
{
open FTP connection // FTP connect code here
once FTP connection obtained ....do some other stuff...
}
感谢。
答案 0 :(得分:0)
您可以使用一次创建的静态(或实际上是实例)变量;
private static FTPConnection myFTPCon = openFTPConnection();
private static FTPConnection openFTPConnection()
{
//open ftp connection here and return it
}
public void method1()
{
for(loop)
{
List li = someList;
method2(li);
}
}
public synchronized void method2(List li)
{
//use myFTPCon here
}
编辑以回复评论
public class MyFTPClass {
private FTPConnection myFTPCon;
public MyFTPClass(String host, String user, String password) {
//connect to the ftp server and assign a value to myFTPCon
}
public synchronized void method() {
//use the myFTPCon object here
}
}
然后,您将从主程序流构造一个MyFTPClass
对象,并从那里使用它。每个新MyFTPClass
实例都引用不同的FTP服务器连接,因此您可以拥有所需数量。
答案 1 :(得分:0)
您没有向我们解释您想要做什么优化。 您想重用连接吗?它不可能以多线程方式使用连接(想象一下在文件传输时发送流命令:这是不可能的。)
唯一的优化是在两组命令之间保持连接打开(您可以避免关闭和重新打开连接的成本,这非常昂贵)。
对静态内容非常小心:进入多线程环境(例如应用程序服务器)时通常会发生问题。