Nasıl senkronize statik yöntemler Java mı?
Eğer statik yöntemleri ile açıklama Dersim var eğer bu uyku fonksiyonları temel veri erişimi gerçekleştirmek için arayacak. Eğer yöntemi senkronize yapma, iş parçacığı güvenliği sağlamak için doğru bir yaklaşım olup olmadığını merak ediyorum.
Bu aynı DB örneğine bilgi erişimi engellemek istiyorum. Ancak, eğer aşağıdaki kodu getObjectByİd belirli bir sınıf tarafından çağrıldığında tüm Sınıflar için çağrıldığını engellemediğini artık eminim.
public class Utils {
public static synchronized Object getObjectById (Class objclass, Long id) {
// call hibernate class
Session session = new Configuration().configure().buildSessionFactory().openSession();
Object obj = session.load(objclass, id);
session.close();
return obj;
}
// other static methods
}
CEVAP
Soruyu daha genel bir adres
Senkronize yöntemleri kullanarak gerçekten sadece steno olduğunu unutmayın (class SomeClass olduğunu varsayıyorum):
synchronized static void foo() {
...
}
aynı gibi
static void foo() {
synchronized(SomeClass.class) {
...
}
}
ve
synchronized void foo() {
...
}
aynı gibi
void foo() {
synchronized(this) {
...
}
}
Kilidi gibi herhangi bir nesne kullanabilirsiniz. Eğer statik yöntemler alt kilitlemek isterseniz, yapabilirsiniz
class SomeClass {
private static final Object LOCK_1 = new Object() {};
private static final Object LOCK_2 = new Object() {};
static void foo() {
synchronized(LOCK_1) {...}
}
static void fee() {
synchronized(LOCK_1) {...}
}
static void fie() {
synchronized(LOCK_2) {...}
}
static void fo() {
synchronized(LOCK_2) {...}
}
}
(statik olmayan yöntemler için, kilitleri statik olmayan alanlar) yapmak isterim
Java senkronize statik yöntemler: nesn...
Neden't statik yöntemler Java'da ...
Non-senkronize statik yöntemler parçac...
GetClass aramak için nasıl() Java'da s...
Yansıma Java: Nasıl bir Yöntem statik ...