У меня есть несколько запросов относительно синхронизации на Java. Я прочитал много контента в Интернете и накормил себя большим количеством информации и, следовательно, с несколькими сомнениями. Я расскажу о своих запросах, поэтому, пожалуйста, помогите мне с моими сомнениями.синхронизация в java (объектные и статические методы)
Объект синхронизации Уровень:
1) Для Следующий пример кода.
public synchronized void a(){
//todo
}
}
Что будет использовать LOCK. Будет ли он автоматически блокироваться на «этом», как это у нас в случае ниже образца кода?
public void a(){
synchronized (this) {
//TODO
}
}
2) У нас есть несколько блоков кода кода блокировки на «этом».
public void a(){
synchronized (this) {
//TODO
}
}
public synchronized void b(){
synchronized (this) {
//TODO
}
}
Так же это означает, что если блок коды Ь() заблокирован, то любой другой поток не сможет получить доступ к(), а в то же время, как у них есть замок на объекте (это)?
синхронизации уровня Класс:
3) Для следующего кода
public static void c(){
synchronized (Main.class) {
//todo
}
}public static void d(){
synchronized (Main.class) {
//todo
}
}public static void e(){
//no syncronization here
}
Вопрос 1: Если С() заблокирован будет любой другой поток сможет получить доступ д(), который синхронизирован блок также? Вопрос 2: Если c() находится под блокировкой, сможет ли любой другой поток получить доступ к e(), который является несинхронизированным методом?
Я бы попробовал их, если бы был вами. –
да, да, да! ..... – user2837260
также попробуйте с каким-нибудь содержательным кодом .. поможет вам лучше понять .. вы почти там :) – user2837260