[表示 : 全て 最新50 1-99 101- 201- 301- 401- 2chのread.cgiへ]
Update time : 03/03 09:58 / Filesize : 99 KB / Number-of Response : 402
[このスレッドの書き込みを削除する]
[+板 最近立ったスレ&熱いスレ一覧 : +板 最近立ったスレ/記者別一覧] [類似スレッド一覧]


↑キャッシュ検索、類似スレ動作を修正しました、ご迷惑をお掛けしました

Java低速GUI Swing 8



1 名前:デフォルトの名無しさん [2008/11/21(金) 11:24:21 ]
ハードウェアの高スペック化、描画アルゴリズムの変更、JavaVMの高速化に伴い、パフォーマンスの問題は改善されています。
しかしながら、"Java"というだけで未だに敬遠されるのが現状。
そんなSwingと引き続き付き合っていくみんなのスレッドです。

Java低速GUI Swing 7
pc11.2ch.net/test/read.cgi/tech/1204155623/
Java低速GUI Swing 6
pc11.2ch.net/test/read.cgi/tech/1190807478/
Java低速GUI Swing 5
pc11.2ch.net/test/read.cgi/tech/1161139809/
Java低速GUI Swing 4
pc8.2ch.net/test/read.cgi/tech/1140533866/
Java低速GUI Swing 3
pc8.2ch.net/test/read.cgi/tech/1121700954/
Java低速GUI Swing 2
pc8.2ch.net/test/read.cgi/tech/1095398949/
Java低速GUI Swing
pc5.2ch.net/test/read.cgi/tech/1062271447/l50

384 名前:sage [2009/03/06(金) 00:33:36 ]
以下のバグが1.4でも6.0でも再現するんだけど、JTextField#setTextはスレッドセーフじゃないの?
それとも検証方法自体が間違ってるの?
bugs.sun.com/bugdatabase/view_bug.do?bug_id=4765353

385 名前:デフォルトの名無しさん mailto:sage [2009/03/06(金) 00:42:39 ]
swing自体スレッドセーフじゃなかったと思う

386 名前:デフォルトの名無しさん mailto:sage [2009/03/06(金) 00:44:55 ]
1.4.2で直ってないって書いてあるし、放置されてるんじゃね?

387 名前:デフォルトの名無しさん mailto:sage [2009/03/06(金) 00:46:00 ]
この再現コードみたいなことをすること自体基本的にないからなぁ

388 名前:デフォルトの名無しさん mailto:sage [2009/03/06(金) 00:50:16 ]
>>385
↓スレッドセーフだと書いてあるんだが・・・
sdc.sun.co.jp/java/docs/j2se/1.4/ja/docs/ja/api/javax/swing/text/JTextComponent.html#setText(java.lang.String)

389 名前:デフォルトの名無しさん mailto:sage [2009/03/06(金) 01:13:56 ]
ざっとソースをみたところ、スレッドセーフじゃないね。

テキストのモデルであるDocumentへの書き込みがアトミックであったとしても、
UIスレッドを用いてコンポーネントから何らかの値をとってくるメソッドで
Documentのインスタンスを2回以上使うような操作をする全てのメソッドは
その間はDocumentへの書き込みを排他していないといけないはずなのだが、
少なくとも、getTextメソッドでは、そんなめんどくさいことはやってない。

390 名前:389 mailto:sage [2009/03/06(金) 01:15:33 ]
ソースは Java 6 しかみてない。すまん

391 名前:デフォルトの名無しさん mailto:sage [2009/03/06(金) 01:18:31 ]
setTextする処理をEDTに投げればいいんじゃないの?的外れだったらごめん。

392 名前:デフォルトの名無しさん mailto:sage [2009/03/06(金) 01:43:30 ]
>>389
>.少なくとも、getTextメソッドでは、そんなめんどくさいことはやってない。

setTextの話だったんだけど、typo?



393 名前:デフォルトの名無しさん mailto:sage [2009/03/06(金) 01:53:44 ]
>>392
getTextが変な値を返す原因がsetTextをUIスレッド以外でアクセスしたことにあるなら、
setTextはスレッドセーフだといえる?

394 名前:デフォルトの名無しさん mailto:sage [2009/03/06(金) 07:33:43 ]
>>393
setTextの時点で変な値にならないのであれば、setTextはスレッドセーフじゃないの?
(よくわかってないかもしれん・・・)

そもそも>>384の再現コードは、getTextした値が""や"12"や"21"になることがあり、
以下のように思ってるんだが、違うかな?

""は、setTextが値を一度クリアしたタイミングで、getTextしているから。(getTextがスレッドセーフではないから)
"12"や"21"はsetTextがロックする前にAbstractDocument#getLengthを呼び出していることが原因。
(setTextもスレッドセーフではない?)

395 名前:デフォルトの名無しさん mailto:sage [2009/03/06(金) 13:04:40 ]
JavaDoc を見る限り getText() はスレッドセーフじゃないんだな…知らなかった…
別スレッドからsetText()して結果的に画面に"12"や"21"や""が描画される
ことがないのであれば setText() はスレッドセーフといえる…のかな?

でも現状は >>394 のいうようにsetText()もスレッドセーフじゃないように見えるなぁ

396 名前:デフォルトの名無しさん mailto:sage [2009/03/06(金) 17:43:09 ]
setText()のスレッドセーフを確認するのに、スレッドセーフではないgetText()が絡んでくるとややこしくなるので
setText()するたびに文字列を溜めておいて、最後に検証するというのはどうだろう。

397 名前:デフォルトの名無しさん mailto:sage [2009/03/06(金) 19:28:23 ]
AbstractDocument.readLockを使えば、少しはましになるけど、ダメだった。
たまに、"12"と"21"が出てくる。

398 名前:デフォルトの名無しさん mailto:sage [2009/03/06(金) 22:27:20 ]
swingコンポーネントをディープコピーしようとしたら、
Exception in thread "AWT-EventQueue-0" java.lang.RuntimeException: java.io.NotSerializableException: com.sun.java.swing.plaf.windows.XPStyle$Skin
っていわれるんだけど、どうすりゃいいの?

399 名前:デフォルトの名無しさん mailto:sage [2009/03/08(日) 00:12:39 ]
Beans Bindingはもう見捨てられたのかと思ってたけど、先月スペックリードが変わってるね。
これは期待してもいいんだろうか。

400 名前:デフォルトの名無しさん mailto:sage [2009/03/08(日) 01:08:00 ]
スペックリードとは仕様定めるリーダーみたいなものでしょうか?

401 名前:デフォルトの名無しさん mailto:sage [2009/03/10(火) 10:41:55 ]
複数のクラスで共用するダイアログなどで、わざわざそれぞれのフィールドとして持たせたくない場合は、UIUtilitiesなどを作ってそこでshow***といった感じで定義しても問題ないでしょうか






[ 新着レスの取得/表示 (agate) ] / [ 携帯版 ]

前100 次100 最新50 [ このスレをブックマーク! 携帯に送る ] 2chのread.cgiへ
[+板 最近立ったスレ&熱いスレ一覧 : +板 最近立ったスレ/記者別一覧](*・∀・)<99KB

read.cgi ver5.27 [feat.BBS2 +1.6] / e.0.2 (02/09/03) / eucaly.net products.
担当:undef