批處理多線程編譯
① 請高手編寫一個可以同時執行2個程序的bat文件
我知道了你的意思:點擊一下打開兩個程序.
非常簡單,如下:
--------------------------------------------------
@echo off
rem 打開
start "c:\windows\DOA.EXE"
start "c:\windwos\dxdiag.exe"
pause
--------------------------------------------------
@echo off
rem 關閉
taskkill /f doa.exe
taskkill /f dxdiag.exe
pause
--------------------------------------------------
復制虛線內的內容,保存為bat為後綴的文件就行了(這里假如你那兩個程序在c:\windwos目錄下.
② 批處理的多線程實現
這,你的結構不對吧。。。
③ 請教批量更新和多線程更新的效率
1、把你資料庫的表,對應寫成一個java bean,假如該類名為Message。
2、寫好一個MessageDao的類,裡麵包含有你對資料庫的操作等方法,如:
public static boolean update(Message m){}
3、寫一個處理線程,如:HandleThread.java
4、寫一個處理的類,調用HandleThread線程。
HandleThread.java
public class HandleThread implements Runnable{
private Handle handle;
public HandleThread(Handle h){
this.handle=h;
}
public void run(){
Message msg=handle.getNext();
while(msg!=null){
myHandle(msg);
msg=handle.getNext();
}
}
private boolean myHandle(Message msg){
//在這里寫你要對資料庫進行的操作。調用MessageDao裡面的方法
}
}
Hanlde.java
public class Handle{
private ArrayList<Message> list=new ArrayList<Message>();
public int next=0;
public void initList(){
//在這里,調用list.add(Message);的方法,把你需要進行批處理的Message放進去
}
private synchronized Message getNext(){
if(next>=list.size()) return null;
next++;
return list.get(next-1);
}//同步,防止多次處理
public void handle(){
next=0;
initList();
int threadQuantity=3;//定義處理的線程個數
for(int i=0;i<threadQuantity;i++){
new Thread(new HandleThread(this)).start();
}
}//開始處理
public static void main(String args[]){
new Handle().handle();
}
}
//有什麼不懂的就追問吧。。
④ spring batch 適用於多線程嗎
Spring Batch是一個輕量級的,完全面向Spring的批處理框架,可以應用於企業級大量的數據處理系統。Spring Batch以POJO和大家熟知的Spring框架為基礎,使開發者更容易的訪問和利用企業級服務。SpringBatch可以提供大量的,可重復的數據處理功能,包括日誌記錄/跟蹤,事務管理,作業處理統計工作重新啟動、跳過,和資源管理等重要功能。
⑤ 多線程和批處理的區別有哪些
多線程是一次同時運行多個命令,就像電路中的並聯。
批處理是一次運行多個命令,但每個命令按順序逐一執行,不是同時,就像電路中的串聯。
⑥ 怎麼加快批處理的運行速度
如果您的%%i值,只是一個內容的話,那麼我覺得您第二個for命令有點多此一舉。
其實bat處理大數據文件,就是有點力不從心。沒辦法。
建議您把s1.txt分割成幾個文件,然後多個腳本針對分割出來的文件,進行獨立處理,同時執行。最後把結果的文件合並。
⑦ 批處理操作系統支持多進程或者多線程嗎
不支持 ,就是順序的一個一個的程序執行。
⑧ 能介紹一下,Java開源的第三方多線程批處理框架嗎
1、修改項目名稱:在Eclipse中選中項目,按下F2鍵,輸入新名稱即可。2、修改Context:在Eclipse中選中項目,按下Alt+Enter鍵打開屬性窗口,在右側找到WebProjectSettings屬性,然後輸入新的ContextRoot即可。
⑨ 如何讓批處理實現(偽)多線程同時運行多條命令
我們知道,MS-DOS或者是純DOS下的命令,都是單線程的。 尤其在MS-DOS中,我們經常把多條命令,放到一個BAT批處理文件中,這樣,可以省去我們輸入命令的麻煩。 然而,較為致命的一個弱點是,MS-DOS是單線程的。 一、MS-DOS單線程的缺點 缺點一:按順序運行命令 按順序運行命令,並且同一時間只能運行一個命令; 缺點二:命令執行需等待 第一個命令執行完畢,無論是成功或者失敗;才會輪到第二個命令的執行;以這樣的方式來運行,勢必會浪費很多時間,尤其是某個命令執行不成功的時候,會等待很長一段時間,讓後面的命令無法運行。如果有多個命令執行失敗,那麼,該BAT的總體運行時間,會比原來消耗至多倍時間。 二、MS-DOS多線程的實現 本例所說的「多線程」,並非真正意義上的多線程;而是一種偽多線程。但是,這種偽多線程,所起到的作用和真的多線程,效果完全一致。 實現原理: 讓多個命令分別通過多個MS-DOS窗口來單獨運行。這樣,每個命令的執行時間和執行結果,都不會受到其它命令的影響。 三、偽多線程的實例 下面,以機房管理為實例,給大家詳細介紹偽多線程的實現方法。 假如,一間機房有60台計算機,現在,我們通過其中的一台計算機,將某個文件夾下的所有文件,分別發送到另外的59台計算機。 以下是最基本的命令: net use \\192.168.0.2\C$ "密碼" /user:"用戶名" >nul X D:\MySendFiles\*.* \\192.168.0.2\C$ /s /e /y net use \\192.168.0.2\C$ /delete >nul exit 以上代碼,是針對一台計算機所使用的批處理命令。 如果要向59台發送文件,得使用for循環,如下代碼: @echo off for /L %%A in (2,1,60) do net use \\192.168.0.%%A\c$ "密碼" /user:"administrator" >nul for /L %%B in (2,1,60) do X D:\MySendFiles\*.* \\192.168.0.%%B\c$ /s /e /y for /L %%C in (2,1,60) do net use \\192.168.0.%%C\c$ /delete >nul exit 可以說,如上代碼已經比較完美了,但是,仍然存在問題。 如果這59台計算機當中,有10台左右網路不正常,那麼,如上循環的代碼中,就有10次代碼運行的等待,會浪費很多時間。 如果想讓上述代碼在執行時間上更效益,那麼,我們可以走這樣一條路,即讓分別發送文件至59台計算機的命令,單獨通過MS-DOS窗口來運行,這樣,在分別向每台計算機發送文件的時候,相互之間不會受到影響。 綜上所述,我們要做的偽多線程批處理,應該是這樣的: 首先,我們建立兩個批處理文件,一個名為1.bat,另外一個文件為2.bat; 1.bat文件代碼如下: for /l %%i in (2,1,60) do start 2.bat 192.168.0.%%i 2.bat文件代碼如下: @echo off net use \\%1\C$ "密碼" /user:"用戶名" >nul X D:\MySendFiles\*.* \\%1\C$ /s /e /y exit 在使用的時候,直接雙擊1.bat文件,一切就OK了。 注意,1.bat中的代碼:for /l %%i in (1,1,6) do start 2.bat 192.168.0.%%i,其中的start 2.bat 正是調用2.bat文件的精髓。而後面的192.168.0.%%i則是傳遞的參數。 很多地方曾講到,在一個批處理文件中調用另外一個批處理文件,使用 call 命令;然,該命令不會出現另外一個MS-DOS窗口;只有start 命令,才會出現另外的MS-DOS窗口,該start命令就是實現偽多線程的關鍵。 當然,上述的代碼,所使用到的命令比較多,如果您不熟悉的話,請在本站參閱其它技術文章,以解閣下之迷惑。
⑩ 在bat腳本中如何實現ftp多任務同時下載,或者多線程下載
@echo off
setlocal enabledelayedexpansion
set ftpsvr=192.168.1.100
set downlist=a.rar b.rar c.rar
for %%i in (%d%) do (
set fn=ftp_%%i.txt
echo open %ftpsvr>!fn!
echo username>>!fn!
echo password>>!fn!
echo bin>>!fn!
echo get %%i>>!fn!
echo bye>>!fn!
start "ftp -s:!fn!")
del ftp_*.txt