昨天在專案中有乙個excel導表的操作,於是就想著用多執行緒插入資料。網上找了下mabayis多執行緒插入資料,看了很多都是配置的xml,但我不是很喜歡寫xml.....於是自己手寫了乙個,**可能不是很優雅,但還是記錄一下.不多說,直接上**。
controller,和dao就不放了,
主要是service層
@override
public int upload(long *****id,listinterviewproblems) ;
trycatch(exception e)finally
});}
//如果計數器不為0,就等待,這個如果計數不正確,主線程就會先執行,相當於資料還沒有插完,就返回成功給前端.
countdownlatch.await();
}catch(exception e)finally
//判斷是否異常
if(flag[0] == 1)
return 1;
else
return 0;
}
這裡的執行緒池也可以換成
threadpoolexecutor threadpoolexecutor = new threadpoolexecutor(5,5,1,timeunit.seconds,new linkedblockingqueue<>(3));
如果不了解多執行緒和lamda表示式..
用我抽取的模板就行
public static void main(string args) ;
trycatch(exception e)finally
});}
countdownlatch.await();
}catch(exception e)finally
system.out.println("完成了.");
}
控制台列印結果
2.呼叫即可
不過我覺得這種自帶的不能夠細粒度的控制,另外原生mybatis和mybatisplus不確定是否有這種寫好的介面,但手寫多執行緒在多個orm框架上都適用.
批量VS多執行緒
在實際的編碼過程中,總會遇到單一處理會有效能風險的問題,於是我們求助於批量或者多執行緒。一 批量處理 一般情況下批量處理就可以規避大部分效能風險的問題。將fetch 改為batchfetch 多數情況都比較簡單,尤其是呼叫其他應用的介面時,將單一介面,換成批量介面即可 而最終主要是修改資料從資料庫中...
PostGrepSql 執行緒池多執行緒資料插入
資料庫表複製,資料量大時,用單純的客戶端工具只能單執行緒匯入,時間耗時長。本文主要採用jdbc和執行緒池解決這個問題。jdbc 我用的 postgrepsql 資料庫,根據自己的資料庫 新增pom.xml postgresqlgroupid postgresqlartifactid 9.1 901 ...
使用mybatis批量操作
mysql 資料庫中使用mybatis中使用replace into和 insert into on duplicate key update 前提條件 根據某一字段不能進行重複 存在就更新,不存在就插入資料 將字段設定為唯一索引 uniq 欄位名稱 一 replace into replace i...