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

そのように一度作成された静的(または実際にはインスタンス)変数を使用できます。

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 に答える
0

どのような最適化を行いたいかを説明していません。接続を再利用しますか? マルチスレッドの方法で接続を使用することはできません (ファイルの転送中にストリーム コマンドを送信することを想像してみてください: それは不可能です)。

唯一の最適化は、2 セットのコマンド間で接続を開いたままにすることです (接続を閉じてから再度開くというコストがかかりますが、これは非常にコストがかかります)。

静的なものには十分注意してください。通常、問題はマルチスレッド環境 (アプリケーション サーバーなど) で発生します。

于 2012-07-31T12:40:50.823 に答える