FTP连接性能java

时间:2012-07-31 12:35:28

标签: java ftp

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

感谢。

2 个答案:

答案 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)

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

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

对静态内容非常小心:进入多线程环境(例如应用程序服务器)时通常会发生问题。