目次へ

解答例 - 実習課題1 - 2.スレッドの実行

(実習課題1)

以下のプログラムを作成しなさい。

  • スレッドの動作スピードを競うコンソールプログラム。実装するスレッドは以下の2つ。
    • 与えられたint型の配列を選択ソートするスレッド。
    • 与えられたint型の配列をバブルソートするスレッド。
  • 2つのスレッドに与えられれるint型の配列は同じものとする。ただし必ずそれぞれのスレッドに対して1つずつ配列を作成する事。配列のサイズと中身のデータは任意とする。

解答例

/**
 * BubbleSortThread.java
 * TECHSCORE Java マルチスレッドプログラミング2章 実習課題1 
 *
 * Copyright (c) 2004 Four-Dimensional Data, Inc.
 */

package com.techscore.thread.chapter2.exercise1;

public class BubbleSortThread extends Thread {
    private int[] array = new int[ThreadSpeadExample.LENGTH];

    public void run() {
        System.out.println("バブルソート開始");
        for (int i = 0; i < array.length; i++) {
            for (int j = 0; j < array.length - i - 1; j++) {
                if (array[j] > array[j + 1]) {
                    int tmp = array[j];
                    array[j] = array[j + 1];
                    array[j + 1] = tmp;
                }
            }
        }
        System.out.println("バブルソート終了");
    }

    public void setArray(int[] array) {
        this.array = array;
    }
}
/**
 * ChoiceSortThread.java
 * TECHSCORE Java マルチスレッドプログラミング2章 実習課題1 
 *
 * Copyright (c) 2004 Four-Dimensional Data, Inc.
 */

package com.techscore.thread.chapter2.exercise1;

public class ChoiceSortThread extends Thread {
    private int[] array = new int[ThreadSpeadExample.LENGTH];

    public void run() {
        System.out.println("選択ソート開始");
        for (int i = 0; i < array.length; i++) {
            int min = i;
            for (int j = i + 1; j < array.length; j++) {
                if (array[min] > array[j]) {
                    min = j;
                }
            }
            if (min != i) {
                int tmp = array[i];
                array[i] = array[min];
                array[min] = tmp;
            }
        }
        System.out.println("選択ソート終了");
    }

    public void setArray(int[] array) {
        this.array = array;
    }
}
/**
 * ThreadSpeadExample.java
 * TECHSCORE Java マルチスレッドプログラミング2章 実習課題1 
 *
 * Copyright (c) 2004 Four-Dimensional Data, Inc.
 */

package com.techscore.thread.chapter2.exercise1;

import java.util.Random;

public class ThreadSpeadExample {
    public static final int LENGTH = 20000;

    public static void main(String[] args) {

        //選択ソートスレッド
        ChoiceSortThread choice = new ChoiceSortThread();
        //バブルソートスレッド
        BubbleSortThread bubble = new BubbleSortThread();

        //同じ値を持つ配列を作る
        int[] array1 = new int[LENGTH];
        int[] array2 = new int[LENGTH];
        for (int i = 0; i < LENGTH; i++) {
            array1[i] = new Random().nextInt(1000); //1000以下のランダムな値を代入
            array2[i] = array1[i]; //同じ値をarray2にも代入
        }

        //配列をセットする
        choice.setArray(array1);
        bubble.setArray(array2);

        //よーい、どん!
        bubble.start();
        choice.start();
    }
}

↑このページの先頭へ

こちらもチェック!

PR
  • XMLDB.jp