導航:首頁 > 編程大全 > java多線程資料庫

java多線程資料庫

發布時間:2024-09-07 15:59:27

java多線程並發操作資料庫能否提高運行速度。

優化建議:
1. 在你的抄代碼里大點評襲測下 每個操作花的時間. 譬如 dom4j解析花了多久, 存儲到資料庫花了多久等等.
2. 評測哪些地方可以並行操作以提高CPU利用率;
3. 資料庫操作部分也可以做適當優化, 譬如批量提交可以顯著提高插入速度, 譬如去除索引/主鍵後插入等;
4. 不同機器的IO速度是不同的, 因此應該能提供運行時的任務調度參數化, 譬如多少個dom4j解析線程, 入庫的批量數量等;

㈡ java多線程訪問資料庫怎麼優化啊,並發很大

只是記錄訪問量而已對吧?
如果只是記錄這種日誌性的數據,可以建立一個消息池,把刷新的記錄寫到消息池裡面,然後寫個類實時從消息池裡面取數據插入到資料庫就好了,這樣就只需要一個連接就夠了。

㈢ java爬蟲採用多線程,資料庫連接多了就報異常

和線程池應該沒關系,樓主這里應該是就是開啟多個線程同時 長時間爬取,估計應該是有些線程存在並發問題,造成了線程死鎖。可以用監控工具跟蹤下。

㈣ java多線程框架有哪些

Java多線程框架主要有以下幾種:


1. Java原生線程框架


Java語言本身提供了多線程的原生支持,通過java.lang.Thread類以及java.util.concurrent包中的一系列類來實現多線程編程。其中,Thread類是Java中最基本的線程類,可以通過繼承Thread類或使用實現Runnable介面的方式創建線程。此外,java.util.concurrent包提供了一系列支持並發編程的工具類,如ExecutorService、CountDownLatch等。


2. Spring框架中的多線程支持


Spring框架提供了對多線程編程的良好支持,主要體現在Spring的任務調度框架中。通過Spring的TaskExecutor介面,可以方便地進行任務調度和線程池管理。此外,Spring還提供了註解驅動的非同步方法執行,通過@Async註解可以輕松地實現非同步處理。


3. Java並發包java.util.concurrent


java.util.concurrent包是Java標准庫中一個重要的並發工具包,提供了多種並發編程的工具類。其中,線程池相關的類如ThreadPoolExecutor、ScheledThreadPoolExecutor等被廣泛應用於多線程編程中。此外,該包還提供了並發集合類,可以有效地處理並發訪問問題。


4. Java多線程框架Apache MINA和Netty


Apache MINA和Netty是Java中常用的網路編程框架,它們也提供了對多線程編程的支持。這兩個框架都基於非同步事件驅動模型,可以有效地處理高並發網路連接和數據傳輸。其中,Netty是一個高性能的非同步事件驅動的網路應用框架,廣泛應用於開發網路服務和分布式系統


以上這些Java多線程框架各有特點,適用於不同的應用場景。開發者可以根據具體需求選擇合適的框架來實現多線程編程。

㈤ java多線程導入數據,怎麼實現事務控制

java多線程導入數據,實現事務控制
單一資料庫的話,最好是多線程算出來的要入庫的數據,返回到主線程里匯總,做最後的排重驗證等,然後在主線程里入庫

㈥ java 多線程 寫入資料庫 數據池

你這個首先得分開。
第一部分:你有很多線程在往數據池裡面寫入數據。那內么,你的線程只管寫容數據,不用理會其他的數據。
第二部分:你的另外的線程(這里可以用spring的job定時器啟動),這部分只管往資料庫寫入數據,至於寫入的條件,你可以判斷數據池的數據是否達到寫入的標准。這里的線程可以配置為啟動一次就一直運行,或者是隔多少秒繼續運行。這樣可以提高效率。
第三部分:數據池,這里的數據池一定要第一部分和第二部分的線程都能夠訪問,並且是唯一的。你可以寫一個公用的類來進行控制。
大致就是這樣的。

㈦ java怎麼多線程操作一個資料庫

//將資料庫中的數據條數分段
public void division(){
//獲取要導入的總的數據條數
String sql3="SELECT count(*) FROM [CMD].[dbo].[my1]";
try {
pss=cons.prepareStatement(sql3);
rss=pss.executeQuery();

while(rss.next()){
System.out.println("總記錄條數:"+rss.getInt(1));
sum=rss.getInt(1);
}
//每30000條記錄作為一個分割點
if(sum>=30000){
n=sum/30000;
resie=sum%30000;
}else{
resie=sum;
}

System.out.println(n+" "+resie);

} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}

}
線程類
public MyThread(int start,int end) {
this.end=end;
this.start=start;
System.out.println("處理掉余數");
try {

System.out.println("--------"+Thread.currentThread().getName()+"------------");
Class.forName(SQLSERVERDRIVER);
System.out.println("載入sqlserver驅動...");
cons = DriverManager.getConnection(CONTENTS,UNS,UPS);
stas = cons.createStatement();
System.out.println("連接SQLServer資料庫成功!!");

System.out.println("載入mysql驅動.....");
Class.forName(MYSQLDRIVER);
con = DriverManager.getConnection(CONTENT,UN,UP);
sta = con.createStatement();
// 關閉事務自動提交
con.setAutoCommit(false);
System.out.println("連接mysql資料庫成功!!");

} catch (Exception e) {
e.printStackTrace();
}
// TODO Auto-generated constructor stub
}

public ArrayList<Member> getAll(){
Member member;
String sql1="select * from (select row_number() over (order by pmcode) as rowNum,*" +
" from [CMD].[dbo].[my1]) as t where rowNum between "+start+" and "+end;
try {
System.out.println("正在獲取數據...");
allmembers=new ArrayList();
rss=stas.executeQuery(sql1);
while(rss.next()){
member=new Member();
member.setAddress1(rss.getString("address1"));
member.setBnpoints(rss.getString("bnpoints"));
member.setDbno(rss.getString("dbno"));
member.setExpiry(rss.getString("expiry"));
member.setHispoints(rss.getString("hispoints"));
member.setKypoints(rss.getString("kypoints"));
member.setLevels(rss.getString("levels"));
member.setNames(rss.getString("names"));
member.setPmcode(rss.getString("pmcode"));
member.setRemark(rss.getString("remark"));
member.setSex(rss.getString("sex"));
member.setTelephone(rss.getString("telephone"));
member.setWxno(rss.getString("wxno"));
member.setPmdate(rss.getString("pmdate"));
allmembers.add(member);
// System.out.println(member.getNames());
}
System.out.println("成功獲取sqlserver資料庫數據!");
return allmembers;

} catch (SQLException e) {
// TODO Auto-generated catch block
System.out.println("獲取sqlserver資料庫數據發送異常!");
e.printStackTrace();
}
try {
rss.close();
stas.close();
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
return null;
}

public void inputAll(ArrayList<Member> allmembers){
System.out.println("開始向mysql中寫入");
String sql2="insert into test.my2 values (?,?,?,?,?,?,?,?,?,?,?,?,?,?)";
try {
ps=con.prepareStatement(sql2);
System.out.println("-------------------------等待寫入數據條數: "+allmembers.size());
for(int i=0;i<allmembers.size();i++){
ps.setString(1, allmembers.get(i).getPmcode());
ps.setString(2, allmembers.get(i).getNames());
//System.out.println(allmembers.get(i).getNames());
ps.setString(3, allmembers.get(i).getSex());
ps.setString(4, allmembers.get(i).getTelephone());
ps.setString(5, allmembers.get(i).getAddress1());
ps.setString(6, allmembers.get(i).getPmdate());
ps.setString(7, allmembers.get(i).getExpiry());
ps.setString(8, allmembers.get(i).getLevels());
ps.setString(9, allmembers.get(i).getDbno());
ps.setString(10, allmembers.get(i).getHispoints());
ps.setString(11, allmembers.get(i).getBnpoints());
ps.setString(12, allmembers.get(i).getKypoints());
ps.setString(13, allmembers.get(i).getWxno());
ps.setString(14, allmembers.get(i).getRemark());
//插入命令列表
//ps.addBatch();
ps.executeUpdate();
}
//ps.executeBatch();
con.commit();

ps.close();
con.close();
this.flag=false;
System.out.println(Thread.currentThread().getName()+"--->OK");
} catch (SQLException e) {
// TODO Auto-generated catch block
System.out.println("向mysql中更新數據時發生異常!");
e.printStackTrace();
}
}
@Override
public void run() {
// TODO Auto-generated method stub
while(true&&flag){
this.inputAll(getAll());
}
}

閱讀全文

與java多線程資料庫相關的資料

熱點內容
painter2015視頻教程 瀏覽:204
jsperror 瀏覽:183
網路到底怎麼賺錢 瀏覽:402
蘋果耳機插口接觸不良 瀏覽:934
運動手環app哪個好 瀏覽:854
java設置double精度 瀏覽:587
java代碼分享網站 瀏覽:321
ps怎麼復制到文件裡面 瀏覽:360
win7管理員指紋登錄密碼忘了怎麼辦 瀏覽:38
c是一次性插入多少條數據 瀏覽:928
u盤文件編輯軟體 瀏覽:767
vb如何打開pdf文件 瀏覽:351
soundlinkiii升級 瀏覽:64
如何把文件改成cad 瀏覽:676
如何把多個監控合在一個網路內 瀏覽:637
qq的頭像在哪個文件夾 瀏覽:468
linuxexfat補丁 瀏覽:582
excelvb編程怎麼輸出數 瀏覽:737
567位qq 瀏覽:172
qq網名女生傷感 瀏覽:292

友情鏈接