博客书第一次生成时候利用多线程排版
来源:互联网 发布:网络彩票合法吗 编辑:程序博客网 时间:2024/06/05 06:18
要求:当一本书第一次生成时,另起一个分支。
要求:
1、多线处理排版(借鉴极速成书接口)。
2、对每一篇博客的排版数据,进行批量入库。
================
1 第一次成书的时候使用 此时podbook pod册子数据都没有
2 利用多线程对所有的list<数据> 排版
3 代码
public void ThreadealBlogBook(List<BlogArticle> blogArticleList, final float rowh1, final float wordsize1, final BlogBook blogBook1) {
long start = System.currentTimeMillis();
final Iterator<BlogArticle> iterarticle = blogArticleList.iterator();
ExecutorService thPool = Executors.newFixedThreadPool(5); //开启有5个线程的线程池
// 这种方式不分线程的顺序,先结束的先返回 comPool.take() 是阻塞方法且容量为一与call()方法的组合
CompletionService<PodBook> comPool = new ExecutorCompletionService<PodBook>(thPool);
while (iterarticle.hasNext()) { //每一个提交的任务
final BlogArticle blogArticle = iterarticle.next();
if (null != blogArticle) {
comPool.submit(new Callable<PodBook>() {
@Override
public PodBook call() {
PodBook podbook = new PodBook();
podbook = PodBook.dao.generateBlogBookSGSPThread(blogArticle, rowh1, wordsize1, "10", blogBook1);
return podbook;
}
});
}
}
List<PodBook> podbooks = new ArrayList<PodBook>();
Iterator iter = blogArticleList.iterator();
while (iter.hasNext()) {
try {
iter.next();
System.out.println("size--");
podbooks.add(comPool.take().get()); //上面的代码与此处是组合使用的
} catch (Exception e) {
e.printStackTrace();
}
}
thPool.shutdown();
//jfinal 集合对象的批量处理
Db.batch("insert into pod_book (booktemplateid,kaibentempletid,width,height,contenttype,levelid1,"
+ "levelid2,creatime,lastpodxml,totalpage,lastupdatetime,wordcount,title_name,bookhashcode) "
+ "values (?,?,?,?,?,?,?,?,?,?,?,?,?,?)",
"booktemplateid,kaibentempletid,width,height,contenttype,levelid1,levelid2,creatime,lastpodxml,totalpage,lastupdatetime,wordcount,title_name,bookhashcode",
podbooks, 10);
System.out.println("use + ");
System.out.println(System.currentTimeMillis() - start);
}
要求:
1、多线处理排版(借鉴极速成书接口)。
2、对每一篇博客的排版数据,进行批量入库。
================
1 第一次成书的时候使用 此时podbook pod册子数据都没有
2 利用多线程对所有的list<数据> 排版
3 代码
public void ThreadealBlogBook(List<BlogArticle> blogArticleList, final float rowh1, final float wordsize1, final BlogBook blogBook1) {
long start = System.currentTimeMillis();
final Iterator<BlogArticle> iterarticle = blogArticleList.iterator();
ExecutorService thPool = Executors.newFixedThreadPool(5); //开启有5个线程的线程池
// 这种方式不分线程的顺序,先结束的先返回 comPool.take() 是阻塞方法且容量为一与call()方法的组合
CompletionService<PodBook> comPool = new ExecutorCompletionService<PodBook>(thPool);
while (iterarticle.hasNext()) { //每一个提交的任务
final BlogArticle blogArticle = iterarticle.next();
if (null != blogArticle) {
comPool.submit(new Callable<PodBook>() {
@Override
public PodBook call() {
PodBook podbook = new PodBook();
podbook = PodBook.dao.generateBlogBookSGSPThread(blogArticle, rowh1, wordsize1, "10", blogBook1);
return podbook;
}
});
}
}
List<PodBook> podbooks = new ArrayList<PodBook>();
Iterator iter = blogArticleList.iterator();
while (iter.hasNext()) {
try {
iter.next();
System.out.println("size--");
podbooks.add(comPool.take().get()); //上面的代码与此处是组合使用的
} catch (Exception e) {
e.printStackTrace();
}
}
thPool.shutdown();
//jfinal 集合对象的批量处理
Db.batch("insert into pod_book (booktemplateid,kaibentempletid,width,height,contenttype,levelid1,"
+ "levelid2,creatime,lastpodxml,totalpage,lastupdatetime,wordcount,title_name,bookhashcode) "
+ "values (?,?,?,?,?,?,?,?,?,?,?,?,?,?)",
"booktemplateid,kaibentempletid,width,height,contenttype,levelid1,levelid2,creatime,lastpodxml,totalpage,lastupdatetime,wordcount,title_name,bookhashcode",
podbooks, 10);
System.out.println("use + ");
System.out.println(System.currentTimeMillis() - start);
}
0 0
- 博客书第一次生成时候利用多线程排版
- 博客书多线程排版
- 多线程死锁,第一次学的时候没看懂,第二次复习的时候才理解,
- CSDN 博客排版技巧
- 博客应该怎么样排版
- 利用django生成博客日历calendar
- 第一次博客
- 第一次博客
- 第一次博客
- 第一次博客
- 第一次博客
- 第一次博客
- 第一次博客
- 第一次博客
- 第一次博客
- 第一次博客
- 第一次博客
- 第一次博客
- 弱类型、强类型、动态类型、静态类型语言的区别
- Android-类qq功能(二)
- Windows多线程总结(1)-- 线程的创建
- 参数传递
- 安卓 获取imageview的bitmap,并保存,用于app头像上传获取
- 博客书第一次生成时候利用多线程排版
- android自定义弹出框样式实现
- 动态控件Creat()和 自定义图片按钮
- Android状态选择器
- golang IDE 工具liteide打开报错解决方法
- 汇编语言学生成绩管理系统(一)结构体的使用
- Sublime Text插件:HTML+CSS+JAVASCRIPT+JSON快速格式化
- LeetCode 58:Length of Last Word
- QTabBar 样式