タグ

TipsとThreadに関するHKRWのブックマーク (3)

  • Javaの道:スレッド(1.はじめてのスレッド)

    スレッドとは スレッドとは1つのプログラム上で動作するある特定の処理のことを言います。1つのプログラム上でいくつもの処理を同時に実行しているかのように見せたい時に使用します。このようなプログラムのことをマルチスレッドプログラムと言います。 インターネットブラウザはマルチスレッドプログラムです。画像をダウンロードしながら、音楽を聞きながら、画面をスクロールしたり、他のページを閲覧したりと言ったことができます。この場合、「画像をダウンロード」、「音楽を聞く」、「画面をスクロール」、「他のページを閲覧」と言った処理をスレッドと言うことができます。 スレッドプログラムの例 スレッドプログラムを例示します。2つのスレッドを平行して実行させ、1から10までカウントするプログラムです。 例1 //(1)Threadクラスを継承 class ExThread1 extends Thread{ public

    Javaの道:スレッド(1.はじめてのスレッド)
  • Timerを使う。周期的に実行したり、一定時間後に実行したり

    javax.swing.Timer Swingのクラスライブラリの1つとして提供されている。一定時間後にイベントを実行することができる。これは、Swingのイベントスレッドで実行されるので、描画に関わる処理を記述していてもSwingスレッドと干渉しないで済むのがメリット。実行はSwingのイベントキューに載せられるため、正確性には欠ける。 java.util.Timer 汎用のタイマとして提供されている。処理を周期的に実行したり、一定時間経過後に実行したり、指定した日時に実行したりと多彩な機能を持つ。Swingとは無関係なので、ヘッドレス(GUIが無い環境)でも使用できる。Timer専用スレッドで管理され、正確性もjavax.swing.Timerよりは高い。しかし、java.util.Timerの実装上欠点がいくつかある。まず、スケジューリングにシステムクロックを使用するので、システムク

  • Swing とスレッド

    シングルスレッド設計 一般的に Swing はシングルスレッド設計であり、他のスレッドが介入してはいけない 逆に言えば、Swing は常に一つのスレッドからのみアクセスすることができます なぜ、Javaの得意分野である「マルチスレッド」を切り捨てるようなことをしたのでしょうか? マルチスレッドはプログラムが複雑で上級プログラマであっても困難といわれます スレッドセーフクラスを拡張するということは、プログラマも熟練者である必要があります また、スレッドの状態をチェックし同期をとるという動作もオーバーヘッドにつながります このような拡張の簡易化や動作の合理化のために Swing はシングルスレッド設計なのです 正確には、Swing コンポーネントが描画されてからが対象になります その後は、イベントディスパッチスレッドからのみアクセス可能となります イベントディスパッチスレッドとは、コールバック

  • 1