進程運行時間跟你的代碼計算有關:計算復雜就多占用點時間;如果想在特定時間運行特定代碼就開啟定時器;控制進程運行時間,也可直接阻塞主線程main(不建議);如果你的程序沒有交互功能,代碼運行完后,main進程還在只要不停止運行;如果有交互功能,你輸入你的命令觸發某些功能。
專注于為中小企業提供成都網站建設、成都做網站服務,電腦端+手機端+微信端的三站合一,更高效的管理,為中小企業蘭陵免費做網站提供優質的服務。我們立足成都,凝聚了一批互聯網行業人才,有力地推動了上千余家企業的穩健成長,幫助中小企業通過網站建設實現規模擴充和轉變。
wait()方法是java.lang.Object類韋線程提供的用于實現線程間通信的同步控制方法。wait()方法使當前線程主動釋放互斥鎖,并進入該互斥鎖的等待隊列。(也就是說,它使當前線程暫停執行,等待其他線程執行notify()方法或者notifyall()方法后再繼續執行本線程。)本方法用于釋放一個項目的線程,喚醒另一個可能在等待的線程。有兩種調用格式:
1.wait()等待通信線程喚醒后再繼續執行本線程。
2.wait(long millis)等待通信線程喚醒或者最多等待millis毫秒后,再繼續執行本線程。
我知道的就這么多了哈,希望對你能有一點幫助哦~~
package?thread.timer;
import?java.util.Calendar;
import?java.util.Timer;
import?java.util.TimerTask;
public?class?TimerTest?{
public?static?void?main(String[]?args)?{
Timer?t?=?new?Timer();
TimerTask?task?=?new?TimerTask()?{
@Override
public?void?run()?{
System.out.println("Task?is?processing.");//?此處可以插入自己想運行的代碼片段
}
};
Calendar?c?=?Calendar.getInstance();
c.set(Calendar.MINUTE,?26);//?時間可以自己設置
t.schedule(task,?c.getTime());
}
}
import java.util.Calendar; \x0d\x0aimport java.util.Date; \x0d\x0aimport java.util.Timer; \x0d\x0aimport java.util.TimerTask; \x0d\x0a \x0d\x0apublic class Test { \x0d\x0a public static void main(String[] args) { \x0d\x0a //timer1(); \x0d\x0a timer2(); \x0d\x0a //timer3(); \x0d\x0a //timer4(); \x0d\x0a } \x0d\x0a \x0d\x0a // 第一種方法:設定指定任務task在指定時間time執行 schedule(TimerTask task, Date time) \x0d\x0a public static void timer1() { \x0d\x0a Timer timer = new Timer(); \x0d\x0a timer.schedule(new TimerTask() { \x0d\x0a public void run() { \x0d\x0a System.out.println("-------設定要指定任務--------"); \x0d\x0a } \x0d\x0a }, 2000);// 設定指定的時間time,此處為2000毫秒 \x0d\x0a } \x0d\x0a \x0d\x0a // 第二種方法:設定指定任務task在指定延遲delay后進行固定延遲peroid的執行 \x0d\x0a // schedule(TimerTask task, long delay, long period) \x0d\x0a public static void timer2() { \x0d\x0a Timer timer = new Timer(); \x0d\x0a timer.schedule(new TimerTask() { \x0d\x0a public void run() { \x0d\x0a System.out.println("-------設定要指定任務--------"); \x0d\x0a } \x0d\x0a }, 1000, 1000); \x0d\x0a } \x0d\x0a \x0d\x0a // 第三種方法:設定指定任務task在指定延遲delay后進行固定頻率peroid的執行。 \x0d\x0a // scheduleAtFixedRate(TimerTask task, long delay, long period) \x0d\x0a public static void timer3() { \x0d\x0a Timer timer = new Timer(); \x0d\x0a timer.scheduleAtFixedRate(new TimerTask() { \x0d\x0a public void run() { \x0d\x0a System.out.println("-------設定要指定任務--------"); \x0d\x0a } \x0d\x0a }, 1000, 2000); \x0d\x0a } \x0d\x0a \x0d\x0a // 第四種方法:安排指定的任務task在指定的時間firstTime開始進行重復的固定速率period執行. \x0d\x0a // Timer.scheduleAtFixedRate(TimerTask task,Date firstTime,long period) \x0d\x0a public static void timer4() { \x0d\x0a Calendar calendar = Calendar.getInstance(); \x0d\x0a calendar.set(Calendar.HOUR_OF_DAY, 12); // 控制時 \x0d\x0a calendar.set(Calendar.MINUTE, 0); // 控制分 \x0d\x0a calendar.set(Calendar.SECOND, 0); // 控制秒 \x0d\x0a \x0d\x0a Date time = calendar.getTime(); // 得出執行任務的時間,此處為今天的12:00:00 \x0d\x0a \x0d\x0a Timer timer = new Timer(); \x0d\x0a timer.scheduleAtFixedRate(new TimerTask() { \x0d\x0a public void run() { \x0d\x0a System.out.println("-------設定要指定任務--------"); \x0d\x0a } \x0d\x0a }, time, 1000 * 60 * 60 * 24);// 這里設定將延時每天固定執行 \x0d\x0a } \x0d\x0a}
第一種是以毫秒為單位計算的。
[java]?view plain?copy
//偽代碼
long?startTime=System.currentTimeMillis();???//獲取開始時間
doSomeThing();??//測試的代碼段
long?endTime=System.currentTimeMillis();?//獲取結束時間
System.out.println("程序運行時間:?"+(end-start)+"ms");
第二種是以納秒為單位計算的。?
[java]?view plain?copy
//偽代碼
long?startTime=System.nanoTime();???//獲取開始時間
doSomeThing();??//測試的代碼段
long?endTime=System.nanoTime();?//獲取結束時間
System.out.println("程序運行時間:?"+(end-start)+"ns");
包含所需的包: ?import java.lang.System;
用Timer可以實現~~
Timer的schedule方法可以指定第一次運行的時刻,和重復間隔
具體可以參考API
timer.schedule(task, firstTime, period)
指定firstTime為21:00:00,period為一天的毫秒數24*3600*1000就成了。。
或者可以自己寫個線程,放個while循環,每分鐘檢查一次,如果到時間了就執行任務,如果沒到就sleep一分鐘。。當然,這種方法比較土。。
更復雜點的可以借助現有的包,比如quartz,有興趣可以研究下~~
文章名稱:java控制代碼執行時間 java 代碼執行時間
瀏覽地址:http://m.kartarina.com/article26/hgjcjg.html
成都網站建設公司_創新互聯,為您提供網站改版、云服務器、網站內鏈、App設計、移動網站建設、網站制作
聲明:本網站發布的內容(圖片、視頻和文字)以用戶投稿、用戶轉載內容為主,如果涉及侵權請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網站立場,如需處理請聯系客服。電話:028-86922220;郵箱:631063699@qq.com。內容未經允許不得轉載,或轉載時需注明來源: 創新互聯