Java'da Metin dosyasını belirli bir şekilde işleyen bir işlev var. Ancak, çok fazla zaman alırsa, bu metin dosyası için işlem büyük olasılıkla işe yaramaz (nedeni ne olursa olsun) ve bunu atlamak isterim. Ayrıca, işlem çok uzun sürerse, aynı zamanda çok fazla bellek kullanır. Ben bu şekilde çözmeye çalıştık ama çalışmıyor: docs
sadece List
bir dizindeki dosyaların olduğuÇok uzun sürerse işlevi atla
for (int i = 0; i<docs.size(); i++){
try{
docs.get(i).getAnaphora();
}
catch (Exception e){
System.err.println(e);
}
}
. Genelde kodu el ile durdurmam gerekir çünkü belirli bir dosyada '' bu dosyaya bağlı olarak '' kalmış ''.
Bu işlev çağrısı için zamanı ölçmenin bir yolu var mı ve Java'ya işlevin atlamasını beklemek için bir işlev var mı, işlev 10 saniyeden daha uzun sürüyor?
DÜZENLEME
birlikte birkaç farklı cevaplar kazıma sonra çalışıyor bu çözüm geldi. Belki de başkası bu fikri kullanabilir. İlk runable (gerekirse Konuya argümanlar geçirebilirsiniz bu şekilde) uygulayan bir sınıf oluşturmak
:
public class CustomRunnable implements Runnable {
Object argument;
public CustomRunnable (Object argument){
this.argument = argument;
}
@Override
public void run() {
argument.doFunction();
}
}
Sonra bir fonksiyonun zaman izlemek için main
sınıfında bu kodu kullanın (argument.doFunction()
) ve çıkış o kadar uzun sürerse:
Thread thread;
for (int i = 0; i<someObjectList.size(); i++){
thread = new Thread(new CustomRunnable(someObjectList.get(i)));
thread.start();
long endTimeMillis = System.currentTimeMillis() + 20000;
while (thread.isAlive()) {
if (System.currentTimeMillis() > endTimeMillis) {
thread.stop();
break;
}
try {
System.out.println("\ttimer:"+(int)(endTimeMillis - System.currentTimeMillis())/1000+"s");
thread.sleep(2000);
}
catch (InterruptedException t) {}
}
}
Ben stop()
depcecated edilir farkındayım ama durdurmak ve bunu durdurmak istediğinizde parçacığı çıkmak için başka bir yol bulamadım.
bu bir göz atın: [http://stackoverflow.com/questions/8982420/time-out-method-in-java][1] [1]: arayüzleri için http://stackoverflow.com/questions/8982420/time-out-method-in-java –
Bu benim çözüm kazanmasına yardımcı, thanks :) – Tim