Java1.1.8を使用してます。
アプリケーションの二重起動を防止したくていろいろ調べたんですが、大体以下の2つの方法があるみたいです。
 1.ロックファイル作成→起動時にファイルの有無を判断
 2.使用しないポートでSocketを作成し、接続→当該ポートへの接続可否を判断

で、2の方法を採ることにしたんですが、エラーが出る場合と出ない場合があり、困っています。
Socketは接続時間の制限などがあるのでしょうか?
コードを載せておきますので、何かアドバイスがあったらお願いします。

 public static void main(String args[]){
   if (appliLockCheck()){
    MainMenu mainmenu = new MainMenu();
   }else{
    System.exit(0);
   }
 }

 public boolean appliLockCheck(){
   try {
    ServerSocket socket = new ServerSocket(3776);
   }catch (BindException exception){
    System.out.println("プログラムは既に開始されています。");
    return false;
   }catch (Exception exception){
    exception.printStackTrace();
    System.out.println("プログラムは既に開始されています。");
    return false;
   }
   return true;
 }