Javaのスレッドで並列処理を行う
目次
1. Threadクラス版
2. Runnableインターフェース版
3. スレッドの排他制御(synchronized)
1. Threadクラス版
Threadクラスを継承して2つのスレッドで並列処理を行います。
※「o」を出力するメインスレッド、「x」を出力する別スレッドの2つ。
// スレッドクラス class MyThread extends Thread { @Override public void run() { for (int i = 0; i < 30; i++) { System.out.print('x'); } } } public class Main { // メインスレッド public static void main(final String[] args){ MyThread my = new MyThread(); // 別スレッドを開始する my.start(); for (int i = 0; i < 30; i++) { System.out.print('o'); } } }
結果 ※毎回、結果が異なります。
xxxxxxxoooooooooxxoooooooooooooooooxxxxxxxooooxxxxxxxx
2. Runnableインターフェース版
Runnableインターフェースを継承して2つのスレッドで並列処理。
※「o」を出力するメインスレッド、「x」を出力する別スレッドの2つ。
// スレッドクラス class MyRunnable implements Runnable { @Override public void run() { for (int i = 0; i < 30; i++) { System.out.print('x'); } } } public class Main { public static void main(final String[] args){ Thread my = new Thread(new MyRunnable()); // 別スレッドを開始する my.start(); for (int i = 0; i < 30; i++) { System.out.print('o'); } } }
結果 ※毎回、結果が異なります。
ooxxxxooooooooxxxxxxxxxxxxooooooxxxxxxxxxxxxxxoooooo
3. スレッドの排他制御(synchronized)
synchronizedで囲まれたブロック、synchronized修飾子があるメソッドは「排他制御」で複数のスレッドで同時に実行する事は出来ません。実行できるのは1つのスレッドのみです。
synchronizedで囲まれたブロック
void Method() { synchronized (this) { ... } }
synchronized修飾子があるメソッド
synchronized void Method() { ... }
スポンサーリンク
関連記事
前の記事: | Javaでデータベース操作(検索/更新系SQL/プリペアドステートメント/トランザクション) |
次の記事: | Javaの手書きSwing/JavaFXでGUIアプリケーション [Hello World !] |
公開日:2018年05月09日
記事NO:02650
この記事を書いた人
![]() | 💻 ITスキル・経験 サーバー構築からWebアプリケーション開発。IoTをはじめとする電子工作、ロボット、人工知能やスマホ/OSアプリまで分野問わず経験。 画像処理/音声処理/アニメーション、3Dゲーム、会計ソフト、PDF作成/編集、逆アセンブラ、EXE/DLLファイルの書き換えなどのアプリを公開。詳しくは自己紹介へ |
プチモンテ代表、アーティスト名:プチモンテ | |
🎵 音楽制作 BGMは楽器(音源)さえあれば、何でも制作可能。歌モノは主にロック、バラード、ポップスを制作。歌詞は叙情詩、叙情的な楽曲が多い。楽曲制作は2023年12月中旬 ~ |
オリジナル曲を始めました✨
YouTubeで各楽曲を公開しています🌈
https://www.youtube.com/@petitmonte