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月中旬 ~ | |









