有一个长度为50的数组,分别存放着1到50之间的整数(无序),写两个线程,一个线程检索数组中的奇数,一个线程检索数组中的偶数。麻烦高手决绝哈,谢了。

解决方案 »

  1.   

    随便写的:
    package test;import java.util.concurrent.BlockingQueue;
    import java.util.concurrent.ExecutorService;
    import java.util.concurrent.LinkedBlockingQueue;
    import java.util.concurrent.ThreadPoolExecutor;
    import java.util.concurrent.TimeUnit;public class Test
    {

    public static void main(String[] args)
    {
    final int iElemCount = 50;
    int[] iTestArray = new int[iElemCount];
    for (int iCnt = 0; iCnt < iElemCount; ++iCnt)
    {
    iTestArray[iCnt] = (int)((Math.random()+1)*100%50);
    }
    BlockingQueue<Runnable> queue = new LinkedBlockingQueue<Runnable>();
    ExecutorService executor = new ThreadPoolExecutor(0, 2, 1, TimeUnit.MINUTES, queue);
    executor.submit(new MyRunnable(iTestArray, true));
    executor.submit(new MyRunnable(iTestArray, false));
    executor.shutdown();
    }
    }
    class MyRunnable implements Runnable
    {
    int [] iTargetArray;
    boolean bPrintOdd;
    public MyRunnable(int[] iTargetArray, boolean bPrintOdd)
    {
    this.iTargetArray = iTargetArray;
    this.bPrintOdd = bPrintOdd;
    }
    public void run()
    {
    if (iTargetArray == null || iTargetArray.length == 0)
    {
    return;
    }
    for (int iCnt = 0; iCnt < iTargetArray.length; ++iCnt)
    {
    if (bPrintOdd && iTargetArray[iCnt]%2 != 0)
    {
    System.out.println("第 "+iCnt+" 个元素为奇数:"+iTargetArray[iCnt]);
    }
    else if(iTargetArray[iCnt]%2 == 0)
    {
    System.out.println("第 "+iCnt+" 个元素为偶数:"+iTargetArray[iCnt]);
    }
    }
    }
    }
      

  2.   

    不好意思,每个线程奇偶数都打了。修改如下:
    package test;import java.util.concurrent.BlockingQueue;
    import java.util.concurrent.ExecutorService;
    import java.util.concurrent.LinkedBlockingQueue;
    import java.util.concurrent.ThreadPoolExecutor;
    import java.util.concurrent.TimeUnit;public class Test
    {

    public static void main(String[] args)
    {
    final int iElemCount = 50;
    int[] iTestArray = new int[iElemCount];
    for (int iCnt = 0; iCnt < iElemCount; ++iCnt)
    {
    iTestArray[iCnt] = (int)((Math.random()+1)*100%50);
    }
    BlockingQueue<Runnable> queue = new LinkedBlockingQueue<Runnable>();
    ExecutorService executor = new ThreadPoolExecutor(0, 2, 1, TimeUnit.MINUTES, queue);
    executor.submit(new MyRunnable(iTestArray, true));
    executor.submit(new MyRunnable(iTestArray, false));
    executor.shutdown();
    }
    }
    class MyRunnable implements Runnable
    {
    int [] iTargetArray;
    boolean bPrintOdd;
    public MyRunnable(int[] iTargetArray, boolean bPrintOdd)
    {
    this.iTargetArray = iTargetArray;
    this.bPrintOdd = bPrintOdd;
    }
    public void run()
    {
    if (iTargetArray == null || iTargetArray.length == 0)
    {
    return;
    }
    for (int iCnt = 0; iCnt < iTargetArray.length; ++iCnt)
    {
    if (bPrintOdd && iTargetArray[iCnt]%2 != 0)
    {
    System.out.println("第 "+iCnt+" 个元素为奇数:"+iTargetArray[iCnt]);
    }
    else if(!bPrintOdd && iTargetArray[iCnt]%2 == 0)
    {
    System.out.println("第 "+iCnt+" 个元素为偶数:"+iTargetArray[iCnt]);
    }
    }
    }
    }