java--第14周实验--任务1--.编写多线程程序

来源:互联网 发布:unity3d个人版 编辑:程序博客网 时间:2024/05/22 11:37
  • /* (程序头部注释开始)    
  •  * 程序的版权和版本声明部分    
  •  * Copyright (c) 2011, 烟台大学计算机学院学生     
  •  * All rights reserved.    
  •  * 文件名称:编写多线程程序。 
  •  * 版 本 号: V1.0     
  •  * 对任务及求解方法的描述部分    
  •  * 输入描述:先封装一类对象RandomNumber,功能是先产生一个大于10的随机整数n,再产生n个随机数并存放于数组中。 
  •  * 输入描述:然后封装两个线程Thread1(要求是Thread的子类)和Thread2(要求实现Runnable接口) 
  •  * 输入描述:并发地对所生成的随机数进行排序,其中Thread1要求采用冒泡排序法进行排序,并输出排序结果。 
  •  * 输入描述:Thread2要求采用快速排序法进行排序,并输出排序结果。最后编写主线程TestThread,加入上述两个线程实现程序的并发, 
  •  * 输入描述:比较这两个线程排序的结果。 
  •  * 问题描述:    
  •  * 程序输出:    
  •  * 程序头部的注释结束    
  •  */  
  • package huguang14;public class RandomNumber {public int arr[];public void RandomNumber1(){int  n=(int) (Math.random()*10+11);arr = new int[n];for(int i =0;i<n;i++){int  m=(int) (Math.random()*10+11); arr[i] = m;}}public int[] getArr() {return arr;}}
    package huguang14;public class TestThread {/** * @param args */public static void main(String[] args) {// TODO Auto-generated method stub/*Thread2 t=new Thread2() ;Thread1 t1 = new Thread1();t1.start();t.t2.start();*/Thread1 t1 = new Thread1();Thread2 t2=new Thread2() ;Thread t = new Thread(t2);t1.start();t.start();}}


    package huguang14;public class Thread1 extends Thread {public void run(){ System.out.println("冒泡排序"); RandomNumber randomNumber = new RandomNumber();randomNumber.RandomNumber1();int[]a=randomNumber.getArr();for(int j=0;j<a.length;j++){for(int i=0;i<a.length-j-1;i++){if(a[i]>a[i+1]){int t=a[i];a[i]=a[i+1];a[i+1]=t;}}}   for (int i = 0; i < a.length; i++) {             System.out.println("冒泡排序"+a[i]);         } }}


    package huguang14;public class Thread2  implements Runnable{Thread t2;public Thread2(){t2=new Thread(this);}@Overridepublic void run() { System.out.println("快速排序"); // TODO Auto-generated method stubRandomNumber arr = new RandomNumber();arr.RandomNumber1();int []a = arr.getArr();       quickSort(a, 0, a.length - 1);                for (int i = 0; i < a.length; i++) {             System.out.println("快速排序"+a[i] + ",");         }     }     static int Partition(int[] a, int left, int right)    {        int tmp;                //进行一趟縼E倥判丒返回中心记录位置        int pivot = a[left];//把中心置于a[0]        while (left < right)        {            while(left<right && a[right]>=pivot)                right--;            //将比中心记录小的移到低端            tmp = a[right];            a[right] = a[left];            a[left] = tmp;            while(left<right && a[left]<=pivot)                left++;            tmp = a[right];            a[right] = a[left];            a[left] = tmp;           //将比中心记录大的移到高端        }        a[left] = pivot; //中心移到正确位置        return left;  //返回中心位置    }        public static void quickSort(int[] a, int left, int right) {         if(left >= right - 1)            return;        int pivot = Partition(a,left,right);        quickSort(a, left, pivot-1);        quickSort(a, pivot+1, right);                 } }



    原创粉丝点击