2014-02-21 67 views
0

如何爲使用Java創建的可運行線程設置時間限制?java中Runnable線程的設置時間限制?

每次創建並運行的線程不止一個。我怎麼知道每個線程創建以來的時間?

這是我使用的代碼:

List<Thread> threads = new ArrayList<Thread>(); 
for(int i=0;i<no_of_threads;i++){ 
Runnable task = new MyRunnable(text,filename,prop,filename,L,L1,seq_no); 
    Thread worker = new Thread(task); 
    worker.start(); 
     // Remember the thread for later usage 
    threads.add(worker);} 


public class MyRunnable implements Runnable { 
MyRunnable(String text,String filename,ArrayList<String> prop,String ip_file,Logger l,Logger l1,int seq_no) { 
     this.text=text; 
     this.filename=filename; 
     this.prop=prop; 
     this.ip_file=ip_file; 
     this.L=l; 
     this.L1=l1; 
     this.seq_no=seq_no; 
    } 

    @Override 
    public void run() { 
     /* other computation*/ 
     } 
+0

當您的runnable開始運行時,將開始時間設置爲當前時間。在代碼中,定期檢查當前時間是否低於開始時間的限制,如果是這種情況,請停止運行。 –

+0

這[問題](http://stackoverflow.com/questions/2733356/killing-thread-after-some-specified-time-limit-in-java)可能是有用的。 – Marco

+0

@JBNizet:它不可能定期檢查時間,因爲:1.系統涉及大量計算,並且爲檢查時間分配內存是不可行的。當創建更多數量的線程時,總體性能會降低。 – kiran

回答

1

第二部分是容易 - 只需添加您的MyRunnable場startTime,像這樣:

public class MyRunnable implements Runnable { 
    long startTime; 
    ... 
    public void run() { 
    startTime = System.currentTimeMillis(); 
    ... 
    } 
} 

在第一部分,限制運行時間,這有點棘手。您基本上需要設置一個計時器並手動終止線程來執行此操作。

+0

除了在runnable方法中計算它之外,還沒有任何其他方法可以知道自創建Thread之後的時間嗎? – kiran