忍者ブログ

Swingのrepaintとマルチスレッドとか

マルチスレッドで裏でごにょごにょしているものを作っていて、手元のマシン群では全くもってでなかったのだが、とあるところのとある人のマシンではなぜか画面の描画がちらちらっとするというお話があった。
画面はSwingで作っていて、方々みるが、ちらつきというと決まり文句しかでてこない。

だが問題はどうやらそこにはなくて、Swingだと元々ちらつかないよとか言われていたりしてこしゃくな!と思っていたところ(手元のマシンではないので再現しているかどうかチェックが難しかったというのもある)、しょうがねーなーと重いながらオフスクリーンバッファを用意して一瞬で書き換えてやる!とか意味不明なことを思っていました。

そのときぴらりんとひらめいたんですがマルチスレッドだから駄目なんじゃないかと。いや、実際は裏のスレッドはrepaintしか呼んでいなくて、多分大丈夫だと思っていたんですが、何のけなしにrepaintComponentにsynchronizedをつけたところぴたっと症状がおさまったようです。

のちのちに別の問題でInvokeLaterしないとだめとか、マルチスレッドにSwingは対応していないとか言われていましたが、repaintは大丈夫ということなんですがねぇ。意味がわかりませんでした。

 

PR

2008/10/15 Programming Comment(0)

COMMENT

COMMENT FORM

NAME
MAIL
WEB
TITLE
COMMENT
PASSWORD

カテゴリー
 
 
 
最新記事
 
(03/28)
(05/31)
(03/21)
(03/19)
(12/26)
 
 
ブログ内検索
 
 
 
カレンダー
 
05 2020/06 07
S M T W T F S
1 2 3 4 5 6
7 8 9 10 11 12 13
14 15 16 17 18 19 20
21 22 23 24 25 26 27
28 29 30
 
 
アーカイブ
 
 
 
最新TB
 
 
 
最新CM
 
 
 
リンク
 
 
 
Feed
 
 
 
注意点
 

英字のみのコメントは拒否しています。スパムの排除のためご理解をお願いいたします。(でも結構スルーされてしまいます。たまに掃除していますがご容赦のほどを。)

 
 
カウンター
 
 
 
アクセス解析