URLConnection#setConnectTimeout

J2SE1.5からやっと導入された接続タイムアウトの設定メソッドだが、少なくとも私の環境

O/S : Windows XP SP3 RC又はWindows Vista SP1
JDK : Java SE 6 Update 11

では全く機能していないように見える。(10秒をセットしても1秒をセットしても20秒でタイムアウトする)

ソースコードを追うも途中からsunの実装に入ってしまうのでわからん。
スタックトレースを見る限りではセットしたタイムアウト値を使わないでサーバに接続しに行っているとしか思えんのだが。

java.net.ConnectException: Connection timed out: connect
	at java.net.PlainSocketImpl.socketConnect(Native Method)
	at java.net.PlainSocketImpl.doConnect(PlainSocketImpl.java:333)
	at java.net.PlainSocketImpl.connectToAddress(PlainSocketImpl.java:195)
	at java.net.PlainSocketImpl.connect(PlainSocketImpl.java:182)
	at java.net.Socket.connect(Socket.java:519)
	at sun.net.NetworkClient.doConnect(NetworkClient.java:152)
	at sun.net.www.http.HttpClient.openServer(HttpClient.java:394)
	at sun.net.www.http.HttpClient.openServer(HttpClient.java:529)
	at sun.net.www.http.HttpClient.(HttpClient.java:233)
	at sun.net.www.http.HttpClient.New(HttpClient.java:306)
	at sun.net.www.http.HttpClient.New(HttpClient.java:323)
	at sun.net.www.protocol.http.HttpURLConnection.getNewHttpClient(HttpURLConnection.java:788)
	at sun.net.www.protocol.http.HttpURLConnection.plainConnect(HttpURLConnection.java:729)
	at sun.net.www.protocol.http.HttpURLConnection.connect(HttpURLConnection.java:654)
	at sun.net.www.protocol.http.HttpURLConnection.getOutputStream(HttpURLConnection.java:832)

根拠も何も無いが、ソケットを生成する辺り、クラスが切り替わる辺り(HttpClient.openServer)が臭いと踏んでいる。

追記:
JSDKのドキュメントには「このメソッドのいくつかの非標準実装では、指定されたタイムアウトが無視されることがあります。」とあるんで、この振る舞いはひょっとしたら仕様なのかもしれない。