多线程的问题,我是新手,根本不会多线程,求大神帮忙帮忙!!!!!!!!!!!!

StringBuffersb=newStringBuffer();Strings=""while(nums>0){sb.append("里面是拼接的sql语句有点长!!"... StringBuffer sb = new StringBuffer();
String s=""
while(nums>0) {
sb.append("里面是拼接的sql语句有点长!!")
s=s+sb
nums--;(nums值一开始为10000)
}
这样10000条数据拼接下来要很久,别人说用多线程可以实现,求大神教教,当然给我实现最好啦~~~,谢谢!!!
展开
 我来答
飞花岁月2007
2017-12-21 · TA获得超过377个赞
知道小有建树答主
回答量:505
采纳率:78%
帮助的人:330万
展开全部
public class Demo {
public static void main(String[] args) {
int threadNum=10;
StringBuffer sb = new StringBuffer();
ExecutorService servicePool = Executors.newFixedThreadPool(threadNum);
List<Future<String>> list=new ArrayList<>();
for(int i=0;i<threadNum;i++){
//每条线程计算添加1000条记录
Task task =new Task(1000);
//用10个线程并行执行 一个10*1000 次
Future<String> futrue=servicePool.submit(task);
//最好合并结果
list.add(futrue);
}
for(Future<String> futrue:list){
try {
String result=futrue.get();
sb.append(result);
} catch (InterruptedException e) {
e.printStackTrace();
} catch (ExecutionException e) {
e.printStackTrace();
}

}
System.out.println(sb.toString());
servicePool.shutdown();
}
}
class Task implements Callable<String> {
private int num = 0;
public Task(int num) {
this.num = num;
}
@Override
public String call() throws Exception {
StringBuilder sb = new StringBuilder();
for (int i = 0; i < num; i++) {
sb.append("里面是拼接的sql语句有点长!!");
}
return sb.toString();
}
}
追问
能详细讲一下嘛。。。。。这些类都不懂。。。。
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式