2006-07-01から1ヶ月間の記事一覧
スレッドをデーモンスレッドにすると、他のスレッド(ユーザスレッド)が全て終了すると勝手に終了する便利なスレッドになるらしいです。知らんかった。で、 Thread th = new Thread(); th.start(); th.setDaemon(true);としたんですがNG。setDaemon()はstart(…
タイトルの通りなのです。swingのリソースにイベントループ以外から触る場合には、SwingUtilities.invokeLater(Runnable run)を使って処理を割り込ませます。後でソース見てみようかな。Cocoaも似たような設計だった気がします。
こちらのページ。Tigerではなおってるそうですが、こういうこともあったんですねえ。。
こちらの記事を読んでInterruptedExceptionの意味を納得。これは"割り込みが発生したことを知らせてる"ってよりは、"速やかに処理をキャンセルしてreturnして欲しい"ってことを指示してる例外なのですね。で、InterruptedExceptionをもらったメソッドだけが…
もう一つポジペネタです。string.intern()メソッドは、同じ文字列表現に対して一意のオブジェクトを返してくれます。こいつはnativeメソッドです。例えば、htmlの解析で"BR"と言う文字列を何百個も保持する可能性がある場合にはintern()しておくとインスタン…
Java EE勉強会のポジペのネタです。 import java.util.*; class Main{ // 1MBのサイズのStringを作る static String makeHugeString(){ StringBuilder buf = new StringBuilder(); for(int i = 0 ; i < 1000000; i++){ buf.append(i % 10); } return buf.toS…
Oracleのconnect by句の解説です。初めて知った。。。ループに対しては無防備なので、注意が必要です。ループしてると一時表領域を食いつぶします。
JDK5.0からのツールですが、jconsoleが便利です。JVMのヒープの使用量などをチェック出来るGUIツールです。 java -cp . -Dcom.sun.management.jmxremote 〜とJVMを起動するとjconsoleからアクセス出来るようになります。別のターミナルからjconsoleと打ってG…
昨日の追記に書いたJDTコンパイラの起動方法ですが、plugins/org.eclipse.jdt.core_3.2.0.v_671.jar に入ってるクラスを起動したら、見事にコンパイラとして動きました♪ゝ(▽`*ゝ)(ノ*´▽)ノ♪ ・・・でも、javacと同じくローカルのExtensionsディレクトリのja…
こちらを拝見する限り、eclipseのコンパイラはjavacじゃなくて内部に持ってるってこと? そうなると、この前の疑問の答えはここにありそうですね。
Runtime#traceMethodCalls と Runtime#traceInstructions に true を渡して見たんだけど、何もロギングしてくれる気配なし。ググってみると、こんな投稿がありました。 As far as I know that method works in the Sun JVMs if the code has be compiled wit…
Throwableのソースを眺めていて、もしかしてprintStackTrace使わなくても実行中の行番号とか得られるのでは!?と思いついたんだが、すでに定石として紹介されてました。これはJDK 1.4で加わったStackTraceElementクラスのおかげでできる技です。JDK 5.0では…
perlっぽいListを作ったわけですが、3つほど考えておくべき点があります。 『AbstractListを使ったこと』 AbstractListで楽チン実装してしまいましたが、パフォーマンス的にはあまりよくないかもしれません。PerlLikeListの全てのメソッドはPerlLikeListのge…
JREのソースをうろついていたら、見たことないインタフェースを発見。hyukiさんもクイズに出されていますが、 java.util.Collections.reverse() 辺りを見るとなんのためのインタフェースかがよくわかります。配列とかはget(int)でアクセスした方が早く、双方…
Eclipse3.2リリースです。IntelMacでもパッチ当てずに動いて、幸せです。で、全然関係ないことで悩んでるんですが、Macなjava + Eclipseの環境で、 /Library/Java/Extensions/*.jar はEclipseから見えるのに、~/Library/Java/Extensions/*.jar は見えないの…