『マルチスレッドの練習-並べ替え問題-Java第14週』
3398 ワード
//*(プログラムヘッダコメント開始)*プログラムの著作権とバージョン宣言部分*Copyright(c)2011、煙台大学コンピュータ学部学生*All rights reserved.*ファイル名: 『マルチスレッドの練習-並べ替え問題-Java第14週』 * 作る ユーザ: 劉江波 * 完了日: 2012 年 12 月 1 日*バージョン番号: v2.1
*タスクおよび解法の説明*問題の説明:
1.マルチスレッドプログラムを作成してください.まず1種類のオブジェクトRandomNumberをカプセル化し、機能はまず10より大きいランダム整数nを生成し、n個のランダム数を生成し、配列に格納することである.2つのスレッドThread 1(Threadのサブクラスが必要)とThread 2(Runnableインタフェースを実装する必要がある)をカプセル化し、生成された乱数を同時にソートし、Thread 1はバブルソート法を用いてソートし、ソート結果を出力する必要がある.Thread 2は、高速ソート法を用いてソートし、ソート結果を出力する必要がある.最後にメインスレッドTestThreadを作成し,上記2つのスレッド実装プログラムの同時実行を加えて,これら2つのスレッド並べ替えの結果を比較する.(必須)*プログラムヘッダのコメント終了*/
RandomNumber:
TestThread:
Thread1:
Thread2:
*タスクおよび解法の説明*問題の説明:
1.マルチスレッドプログラムを作成してください.まず1種類のオブジェクトRandomNumberをカプセル化し、機能はまず10より大きいランダム整数nを生成し、n個のランダム数を生成し、配列に格納することである.2つのスレッドThread 1(Threadのサブクラスが必要)とThread 2(Runnableインタフェースを実装する必要がある)をカプセル化し、生成された乱数を同時にソートし、Thread 1はバブルソート法を用いてソートし、ソート結果を出力する必要がある.Thread 2は、高速ソート法を用いてソートし、ソート結果を出力する必要がある.最後にメインスレッドTestThreadを作成し,上記2つのスレッド実装プログラムの同時実行を加えて,これら2つのスレッド並べ替えの結果を比較する.(必須)*プログラムヘッダのコメント終了*/
RandomNumber:
package week14;
public class RandomNumber {
/*
* RandomNumber, 10 n, n 。
*/
private int i ;
public int num[];
RandomNumber(){
i = (int)(Math.random()*100)+11;
num = new int[i];
for(int j=0; j<i; j++)
{
num[j] = (int)(Math.random()*100);
}
}
}
TestThread:
package week14;
public class TestThread {
/*
* 。 RandomNumber, 10 n,
* n 。 Thread1( Thread )
* Thread2( Runnable ) , Thread1 ,
* 。Thread2 , 。 TestThread,
* , 。( )
*/
public static void main(String[] args) {
// TODO Auto-generated method stub
RandomNumber r = new RandomNumber();
Thread1 t1 = new Thread1(r);
Thread2 t2 = new Thread2(r);
// Thread thread1 = new Thread();
// Thread thread2 = new Thread(t2);
//
// thread1.start();
// thread2.start();
t1.run();
t2.run();
}
}
Thread1:
package week14;
public class Thread1 extends Thread {
private int Thread1[];
Thread1(RandomNumber rn)
{
Thread1 = new int[rn.num.length];
Thread1 = rn.num;
}
public void run()
{
for(int i=0; i<Thread1.length; i++)
{
for(int j=0; j<Thread1.length-i-1; j++)
{
if(Thread1[j] > Thread1[j+1])
{
int mid = Thread1[j];
Thread1[j] = Thread1[j+1];
Thread1[j+1] = mid;
}
}
}
for(int i=0; i<Thread1.length; i++)
{
System.out.println(Thread1[i]);
}
System.out.println("Thread1 。");
}
}
Thread2:
package week14;
import java.util.Arrays;
public class Thread2 implements Runnable {
private int Thread2[];
Thread2(RandomNumber rn)
{
Thread2 = new int[rn.num.length];
Thread2 = rn.num;
}
public void run() {
// TODO Auto-generated method stub
Arrays.sort(Thread2, 0, Thread2.length);
for(int i=0; i<Thread2.length; i++)
{
System.out.println(Thread2[i]);
}
System.out.println("Thread2 。");
}
}