多线程的问题,我是新手,根本不会多线程,求大神帮忙帮忙!!!!!!!!!!!!
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条数据拼接下来要很久,别人说用多线程可以实现,求大神教教,当然给我实现最好啦~~~,谢谢!!! 展开
String s=""
while(nums>0) {
sb.append("里面是拼接的sql语句有点长!!")
s=s+sb
nums--;(nums值一开始为10000)
}
这样10000条数据拼接下来要很久,别人说用多线程可以实现,求大神教教,当然给我实现最好啦~~~,谢谢!!! 展开
1个回答
展开全部
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();
}
}
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();
}
}
追问
能详细讲一下嘛。。。。。这些类都不懂。。。。
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询