java--第14周实验--任务1--.编写多线程程序
Test类:
[java]
/* (程序头部注释开始)
* 程序的版权和版本声明部分
* Copyright (c) 2011, 烟台大学计算机学院学生
* All rights reserved.
* 文件名称:编写多线程程序。
* 作 者: 雷恒鑫
* 完成日期: 2012 年 11 月 20日
* 版 本 号: V1.0
* 对任务及求解方法的描述部分
* 输入描述:先封装一类对象RandomNumber,功能是先产生一个大于10的随机整数n,再产生n个随机数并存放于数组中。
* 输入描述:然后封装两个线程Thread1(要求是Thread的子类)和Thread2(要求实现Runnable接口)
* 输入描述:并发地对所生成的随机数进行排序,其中Thread1要求采用冒泡排序法进行排序,并输出排序结果。
* 输入描述:Thread2要求采用快速排序法进行排序,并输出排序结果。最后编写主线程TestThread,加入上述两个线程实现程序的并发,
* 输入描述:比较这两个线程排序的结果。
* 问题描述:
* 程序输出:
* 程序头部的注释结束
*/
public class Test {
/**
* @param args
*/
public static void main(String[] args) {
// TODO Auto-generated method stub
System.out.println("主线程开始");
Thread1 thread1 = new Thread1();
Thread2 thread2 = new Thread2();
Thread t = new Thread(thread2);
thread1.start();
t.start();
thread1.run();
}
}
Thread1类:
[java]
public class Thread1 extends Thread {
public void run() {
RandomNumber randomNumber = new RandomNumber();
randomNumber.array();
int[] a = randomNumber.getA();
int t = 0;
for (int j = 0; j < a.length; j++) {
for (int i = 0; i < a.length - 1 - j; i++) {
if (a[i + 1] > a[i])// 如果下一个数大于前一个数,交换位置
t = a[i];
a[i] = a[i + 1];
a[i + 1] = t;
}
}
System.out.println("线程1的快速排序算法结果:");
for (int i = 0; i < a.length; i++) {
System.out.println(a[i]);
}
}
}
Thread2
Thread2类:
[java]
public class Thread2 implements Runnable {
private static void sort(int[] a, int first, int last)
{
int i = first;
int j = last;
int middle = a[first]; // 第一次调用时候我选取要排序的数组的第一个数作为关键数据
while (true) {
while (++i < last - 1 && a[i] < middle)
;
while (--j > first && a[j] > middle)
;
if (i >= j) {
break;
}
swap(a, i, j);
}
a[first] = a[j];
a[j] = middle;
if (first < j) {
sort(a, first, j);
}
if (i < last) {
sort(a, i, last);
}
}
private static void swap(int[] a, int i, int j) {
int temp = a[i];
a[i] = a[j];
a[j] = temp;
}
public void run() {
System.out.println("我是线程2的头");
RandomNumber randomNumber = new RandomNumber();
randomNumber.array();
int[] a = randomNumber.getA();
sort(a, 0, a.length);
System.out.println("线程2的快速排序算法结果:");
for (int i = 0; i < a.length; i++) {
System.out.println(a[i]);
}
}
}
RandomNumber类:
[java]
public class RandomNumber {
//功能是先产生一个大于10的随机整数n,再产生n个随机数并存放于数组中。
int []a;
public int[] getA() {
return a;
}
public void array(){
int n=(int)(10+10*Math.random());
System.out.println("产生的随机数数为&quo
补充:软件开发 , Java ,