0

我想通过打开一次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...
}

谢谢。

4

2 回答 2

0

你没有向我们解释你想要做什么优化。你想重用一个连接吗?不可能以多线程方式使用连接(想象在文件传输时发送流命令:这是不可能的)。

唯一的优化是在两组命令之间保持连接打开(您避免了关闭和重新打开连接的成本,这是相当昂贵的)。

对静态的东西要非常小心:问题通常发生在多线程环境(例如应用程序服务器)中。

于 2012-07-31T12:40:50.823 回答
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 服务器连接,因此您可以拥有任意数量的实例。

于 2012-07-31T12:38:21.013 回答