『マルチスレッドの練習-並べ替え問題-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:
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    。");
	}
	
}