Java programlamada yeniyim. İki db sorgusu yürütmem gereken bir kullanım vaktim var. Dersimde yapısı böyle bir şeydir: Java'da en iyi uygulamaların çoğaltılması
class A {
public Object func_1() {
//executes db query1
}
public Object func_2() {
//executes db query1
}
}
Şimdi bu 2 işlevleri çağıran aynı sınıfta bir eklenti başka fonksiyon func_3 var ama aynı zamanda paralel yürütmek emin olur. Bunun için, kullanabileceğiniz callables ve futures. Bu şekilde kullanmak için doğru yolu var mı? Bu değişkeni geçici bir değişkende saklıyorum ve daha sonra func_1 ve func_13 ile func_23'ü çağırmak için bunu kullanıyorum (ki bu doğru bir yaklaşım olduğundan emin değilim). Ya da bu gibi davaları halletmenin başka bir yolu var mı?
class A {
public Object func_1() {
//executes db query1
}
public Object func_2() {
//executes db query1
}
public void func_3() {
final A that = this;
Callable call1 = new Callable() {
@Override
public Object call() {
return that.func_1();
}
}
Callable call2 = new Callable() {
@Override
public Object call() {
return that.func_2();
}
}
ArrayList<Callable<Object>> list = new ArrayList<Callable<Object>>();
list.add(call1);
list.add(call2);
ExecutorService executor = Executors.newFixedThreadPool(2);
ArrayList<Future<Object>> futureList = new ArrayList<Future<Object>>();
futureList = (ArrayList<Future<Object>>) executor.invokeAll(list);
//process result accordingly
}
}
"Java programlamada yeniyim" = false :) –
Sanırım sorun yok. Ancak, aynı zamanda func_1 ve func_2 işlevlerinde kullanılan paylaşılan mülkler konusunda da dikkatli olmalısınız. –
http://www.javaconcurrencyinpractice.com/? – fge