Чӣ тавр фарқ мекунад усулҳои синхронизатсияшудаи намуна ва усулҳои синхронизатсияшудаи статикӣ дар Java?
sobes.tech AI
Ҷавоб аз AI
Дар Java мавҷуданд ду навъи усулҳои ҳамоҳангсозӣ: усулҳои ҳамоҳангсозии намуна ва усулҳои ҳамоҳангсозии статикӣ. Асосии фарқият дар он аст, ки дар кадом объект бандшавӣ сурат мегирад:
-
Усули ҳамоҳангсозии намуна (
synchronizedбеstatic): Бандшавӣ дар объект (this) ки ба он усул тааллуқ дорад, сурат мегирад. Ин маъно дорад, ки агар шумо чанд намунаи синф дошта бошед, ҳар яке бандшавии худро дорад. -
Усули ҳамоҳангсозии статикӣ (
static synchronized): Бандшавӣ дар объекти синф — объектииClassки худи синфро намояндагӣ мекунад. Бинобар ин, бандшавӣ барои ҳамаи намунаҳои синф умумӣ аст.
Масалан:
public class Example {
public synchronized void instanceMethod() {
// банд мекунад this
}
public static synchronized void staticMethod() {
// банд мекунад Example.class
}
}
Ин маъно дорад, ки ду ҷараён наметавонанд ҳамзамон иҷрои як усули ҳамоҳангсозии намунаи як объектро анҷом диҳанд, аммо метавонанд усулҳои ҳамоҳангсозии гуногунро дар объектҳои гуногун иҷро кунанд.
Дар айни замон, усули ҳамоҳангсозии статикӣ тамоми синфро банд мекунад, бинобар ин, дар як вақт танҳо як ҷараён метавонад ҳар гуна усули ҳамоҳангсозии статикии ин синфро иҷро кунад, новобаста аз намунаҳо.