线程检索 有一个长度为50的数组,分别存放着1到50之间的整数(无序),写两个线程,一个线程检索数组中的奇数,一个线程检索数组中的偶数。麻烦高手决绝哈,谢了。 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 随便写的: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]); } } } } 不好意思,每个线程奇偶数都打了。修改如下: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]); } } } } 关于effective java2 第66条的程序 请教为什么必须用static? 求助,javaw命令错误 大家看看我这样配置Spring的事务管理对吗? 我看电子货币 netbeans5.5 使用jfreechart 問題 new String("a")问题 我是Java新手,刚写Java程序便遇上难题了。(在线等待) TextArea可以完全显示文本 但是出现了滚动条 关于TextArea查找的问题,来帮忙回答一下,谢谢了。。。 JAVA初学者提问(很简单,30分) java数据输入输出的小程序,请高手帮忙看看
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]);
}
}
}
}
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]);
}
}
}
}