當前位置:首頁 » 編程語言 » java多線程查詢

java多線程查詢

發布時間: 2022-08-12 17:22:32

java 多線程是什麼

進程是程序在處理機中的一次運行。一個進程既包括其所要執行的指令,也包括了執行指令所需的系統資源,不同進程所佔用的系統資源相對獨立。所以進程是重量級的任務,它們之間的通信和轉換都需要操作系統付出較大的開銷。

線程是進程中的一個實體,是被系統獨立調度和分派的基本單位。線程自己基本上不擁有系統資源,但它可以與同屬一個進程的其他線程共享進程所擁有的全部資源。所以線程是輕量級的任務,它們之間的通信和轉換只需要較小的系統開銷。

Java支持多線程編程,因此用Java編寫的應用程序可以同時執行多個任務。Java的多線程機制使用起來非常方便,用戶只需關注程序細節的實現,而不用擔心後台的多任務系統。

Java語言里,線程表現為線程類。Thread線程類封裝了所有需要的線程操作控制。在設計程序時,必須很清晰地區分開線程對象和運行線程,可以將線程對象看作是運行線程的控制面板。在線程對象里有很多方法來控制一個線程是否運行,睡眠,掛起或停止。線程類是控制線程行為的唯一的手段。一旦一個Java程序啟動後,就已經有一個線程在運行。可通過調用Thread.currentThread方法來查看當前運行的是哪一個線程。

㈡ 如何用java單用戶多線程查詢資料庫

首先,你的確定數據的主鍵是否可以使用序列自增。 如果可以那麼你可以在插入數據的時候獲取序列里的值,這樣數據就不會重復了。 其次,可以創建一個公共方法,進行數據的插入操作,並且方法類型聲明為 static synchronized 類型,這樣基本上就不...

㈢ 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什麼情況使用多線程

單線程程序的執行時一步一步的走,第一步完成了,才開始做第二步。舉個例子,我的一個程序的目的是查詢一張表的所有數據用java的窗體將數據展示出來,沒用多線程的話,我會先查數據,必須在查完之後,在渲染窗體,打開這個窗體界面。假如數據量大的話,我運行程序了幾分鍾都沒什麼反應。 這時我可以開一條線程去查詢數據,打開窗體,和查詢數據同時進行,這樣做的話增強利用率,節約時間。不用多線程的話,程序必定會先執行完一個步驟才會去執行下一步

如圖

㈤ java如何使用線程查找文本

思路: 1、學習java多線程
2、學習怎麼深度遍歷目錄 (文件就不用繼續下去,目錄就繼續遍歷下去)
3、文件內容查找器,是文本文件就打開 進行查找「內容」匹配
4、統計下數據
5、搞完叫老師去上廁所,有病出這無聊的題目。

㈥ java中什麼叫做線程什麼叫多線程多線程的特點是什麼

線程的概念:Thread 每個正在系統上運行的程序都是一個進程。每個進程包含一到多個線程。進程也可能是整個程序或者是部分程序的動態執行。

多線程的概念: 多線程是為了同步完成多項任務,不是為了提高運行效率,而是為了提高資源使用效率來提高系統的效率。


多線程的特點:使用線程可以把占據長時間的程序中的任務放到後台去處理


用戶界面可以更加吸引人,這樣比如用戶點擊了一個按鈕去觸發某些事件的處理,可以彈出一個進度條來顯示處理的進度 。


程序的運行速度可能加快 ·在一些等待的任務實現上如用戶輸入、文件讀寫和網路收發數據等,線程就比較有用了。


在這種情況下我們可以釋放一些珍貴的資源如內存佔用等等。

㈦ java多線程實現

程序如下:

/**
*
* GuiTuSaiPao.java
* @author Antonio
* 2009年9月2日20:16:33
* 實現Runnable介面中的run方法
*
*/
public class GuiTuSaiPao implements Runnable {
private String name;
private int length=0;

public GuiTuSaiPao(){}

public GuiTuSaiPao(String name){
this.name=name;
}

public void run(){
while(true){
//每次停500毫秒
try {
Thread.sleep(500);
} catch (InterruptedException e) {
e.printStackTrace();
}
//向前跑十米
length+=10;
System.out.println(name+"已跑了"+length+"米.");
//到達終點
if(length>=100){
System.out.println(name+",已經到達終點!");
//結束賽跑,break
break;
}
}
}

public static void main(String[] args) {
GuiTuSaiPao wugui=new GuiTuSaiPao("烏龜");
GuiTuSaiPao tuzi=new GuiTuSaiPao("兔子");
Thread thread=new Thread(wugui);
Thread thread2=new Thread(tuzi);
//啟動線程
thread.start();
thread2.start();

}

}

輸出結果:(不一定每次都一樣!)
烏龜已跑了10米.
兔子已跑了10米.
兔子已跑了20米.
烏龜已跑了20米.
烏龜已跑了30米.
兔子已跑了30米.
兔子已跑了40米.
烏龜已跑了40米.
兔子已跑了50米.
烏龜已跑了50米.
烏龜已跑了60米.
兔子已跑了60米.
烏龜已跑了70米.
兔子已跑了70米.
烏龜已跑了80米.
兔子已跑了80米.
兔子已跑了90米.
烏龜已跑了90米.
兔子已跑了100米.
兔子,已經到達終點!
烏龜已跑了100米.
烏龜,已經到達終點!

完全看rp,這就是線程!

給分吧,哈哈

㈧ java 多線程怎麼查看當前線程id

publicclass線程id
{
publicstaticvoidmain(String[]args)
{
System.out.println(" ==========多線程怎麼查看當前線程id========== ");
init();
}//初始化!
privatestaticvoidinit()
{
for(inti=0;i<2;i++)
{
newThread(newTestRunnable()).start();
}
}
}


{
//簡單測試直接用了靜態,偷懶了!
privatestaticinti=10;
publicvoidrun()
{
show();
}
synchronizedvoidshow()
{
while(i>=1)
System.out.println("當前執行的線程Id是:"+Thread.currentThread().getName()+"---->"+i--+" ");
}
}

㈨ JAVA多線程可以提高Oracle的查詢速度嗎

可以的
目前我的做法:
1.定義一個方法獲取年級范圍內的學員id,返回個List<Student>出去。
2.再寫個方法接住List<Student>進行遍歷,一個個id拿出來查詢上面的表,
在游標next的同時就計算總分,判斷最高分,計算平均分,然後add。
最後返回出來的就是一個計算好的List。

㈩ synchronized java 多線程 查詢資料庫時同步不了 幫忙各位

你的MailUtil對每個用戶來說每次是new Object, synchronized (this)只是獲取當前MailUtil Object的鎖,每個用戶有不同的MailUtil Object,那麼又怎麼會同步呢?每個線程synchronized里的Object必須是同一個才能起到同步的作用啊。

熱點內容
電腦彈出腳本錯誤還能繼續使用嗎 發布:2025-01-20 21:42:29 瀏覽:585
安卓私密照片在哪裡 發布:2025-01-20 21:41:05 瀏覽:4
同濟復試編譯原理 發布:2025-01-20 21:33:54 瀏覽:309
c語言判斷字母 發布:2025-01-20 21:31:09 瀏覽:423
ftp伺服器搭建linux 發布:2025-01-20 21:26:05 瀏覽:334
安卓手機瀏覽器如何翻譯英文網頁 發布:2025-01-20 21:21:01 瀏覽:422
刺客信條梟雄怎麼調成低配置 發布:2025-01-20 21:20:51 瀏覽:709
nss存儲 發布:2025-01-20 21:04:47 瀏覽:35
下載了怎麼解壓 發布:2025-01-20 20:55:22 瀏覽:180
c語言第八章答案 發布:2025-01-20 20:55:17 瀏覽:697