ืกื ืืจืื ืืชืืืืก ืืจืืืื ืืฉืืืืช. ืืืืง ืงืื ืืกืื ืืจื ืืืื ืืืชืืฆืข ืจืง ืขื ืืื ืฉืจืฉืืจ ืืื ืืื ืคืขื. Java ืชืืื ืืืกืคืจ ืฉืจืฉืืจืื ืืืืฆืืข. ืื ืขืืื ืืืจืื ืืฉื ื ืฉืจืฉืืจืื ืื ืืืชืจ ืืืฉืช ืืืืชื ืฉืื ืื ืืืืืืงื. ืกื ืืจืื ืืื ืชืืืื ืืืืคืฉืจ ืืื ืืฉืจืฉืืจืื ืืืงืืืืื ืืชืืื ืืช ืืคืขืื ืืืืคื ืกืื ืืจืื ื. ืกื ืืจืื ืืื ืข ืฉืืืืืช ืขืงืืืืช ืืืืืจืื ืื ืืจืืืช ืืืืฉื ืื ืขืงืืืช ืืืืืจืื ืืฉืืชืฃ. ืืืฉืจ ืืชืืื ืืืืจืืช ืืืกืื ืืจื ืช, ืืฉืจืฉืืจ ืืืืืง ืฆื ืขืืืจ ืืืืืืืงื ืฉืืฉืืื ืฉืื ืืืืฆืขืช. ืื ืฉืจืฉืืจ ืืืจ ืืืฆืข ืฉืืื ืืกืื ืืจื ืช, ืืฉืจืฉืืจ ืฉืื ืืืกืื ืขื ืฉืืฉืจืฉืืจ ืืฉื ื ืืฉืืจืจ ืืช ืืฆื. ืกื ืืจืื ืืืฉื ื-Java ืืืืฆืขืืช ืืืื ืฉืืืจื
synchronized
. ืืชื ืืืื ืืืฉืชืืฉ ืื ืืฉืืขืืจืื ืฉืื ืขื ืืื ืืืืจืช ืฉืืืืช ืื ืืืืงืื ืืกืื ืืจื ืื. ืื ืชืืื ืืืฉืชืืฉ synchronized
ืืืฉืชื ืื ืื ืืชืืื ืืช ืืืืืจืช ืืืืงื.
ื ืขืืื ืืจืืช ืืืืืืงื
ืืื ืื ืื ืื ืืกื ืืจืื ืฉื ืฉืืื ืื ืกืืืืช ืื ืืืืง ืงืื ืื ืกืืื ืื ืฉืจืง ืฉืจืฉืืจ ืืื ืืืื ืืืคืขืื ืืืืง ืื ืืชืืื ื ืชืื ื ืืืืคืข ื ืชืื ืฉื ืืืืงื. ืื ืฆืจืื ืืืืขืฉืืช ืืื ืคืขื ืฉืืชื ืฆืจืื ืืืคืื ืืช ืฉืจืฉืืจ ืื ืชืื ืื ืืจืืช ืืืืคืข ืืืื. ืืืืื:public class DemoClass{
public synchronized void demoMethod(){}
}
ืืึน
public class DemoClass{
public void demoMethod(){
synchronized (this) {
//other thread safe code
}
}
}
ืืึน
public class DemoClass{
private final Object lock = new Object();
public void demoMethod(){
synchronized (lock) {
//other thread safe code
}
}
}
ื ืขืืื ืืจืืช ืืืืชื
ืืื ืข ืืฉืจืฉืืจืื ืืจืืืื ืืืืื ืก ืืืืืง ืืกืื ืืจื ืืืืื ืืืืฆืืข ืืื ืืื ืืืืืคืขืื ืืืืื ืื ืฉื ืืืืืงื. ืืืฉืืขืืช ืืื ืฉืื ืืฉ 100 ืืืคืขืื ืฉื ืืืืืงื ืืืืื ืืคืขืืช ืืชืืื ืืชDemoClass
, ืื ืจืง ืฉืจืฉืืจ ืืื ืืืืชื ืืื ืืืื ืืืคืขืื demoMethod()
ืืื ืืื ืืืืงืจืื, ืืื ืฉืืจ ืืืงืจืื ืืืืกืื ืืฉืจืฉืืจืื ืืืจืื. ืื ืืืจืื ืืืฉืจ ืืชื ืฆืจืื ืืืคืื ืฉืจืฉืืจ ื ืชืื ืื ืกืืื ืืืื.
public class DemoClass{
public synchronized static void demoMethod(){}
}
ืืึน
public class DemoClass{
public void demoMethod(){
synchronized (DemoClass.class) {
//other thread safe code
}
}
}
ืืึน
public class DemoClass
{
private final static Object lock = new Object();
public void demoMethod(){
synchronized (lock) {
//other thread safe code
}
}
}
ืืื ืืขืจืืช ืืฉืืืืช
- ืกื ืืจืื ื-Java ืืืืื ืฉืืื ืฉื ื ืฉืจืฉืืจืื ืืืืืื ืืืฆืข ืฉืืื ืืกืื ืืจื ืช ืื-ืืื ืืช ืื ืืืงืืื.
synchronized
ื ืืชื ืืืฉืชืืฉ ืจืง ืืฉืืืืช ืืืืืงื ืงืื. ืฉืืืืช ืื ืืืืงืื ืืื ืืืืืื ืืืืืช ืกืืืืื ืื ืื ืกืืืืื.- ืืื ืคืขื ืฉืจืฉืืจ ืืืฉืื ื ืื ืก ืืฉืืื ืืกืื ืืจื ืช ืื ืืกืืื ืืื ืจืืืฉ ื ืขืืื ืืืื ืคืขื ืฉืจืฉืืจ ืืืฆื ืืฉืืื ืืกืื ืืจื ืช ืื ืืกืืื ื-JVM ืืฉืืจืจ ืืช ืื ืขืืื. ืื ืขืืื ืืฉืชืืจืจืช ืื ืื ืืฉืจืฉืืจ ืขืืื ืืช ืืฉืืื ืืืกืื ืืจื ืช ืืืืจ ืืฉืืืชื ืขืงื ืฉืืืืืช ืื ืืจืืืื ืืืฉืื.
synchronized
ื-Java , ืื ืืืืจ ืฉืื ืฉืืื ืืกืื ืืจื ืช ืงืืจืืช ืืฉืืื ืืกืื ืืจื ืช ืืืจืช ืฉืืืจืฉืช ืืช ืืืชื ื ืขืืื, ืืฉืจืฉืืจ ืื ืืืื ืฉืืืืืง ืืช ืื ืขืืื ืืืื ืืืืื ืก ืืฉืืื ืื ืืืื ืืจืืืฉ ืืช ืื ืขืืื.- ะกะธะฝั
ัะพะฝะธะทะฐัะธั ะฒ Java ะฑัะดะตั ะฑัะพัะฐัั
NullPointerException
ะตัะปะธ an object ะธัะฟะพะปัะทัะตะผัะน ะฒ ัะธะฝั ัะพะฝะธะทะธัะพะฒะฐะฝะฝะพะผ ะฑะปะพะบะต null. ะะฐะฟัะธะผะตั, ะฒ ะฒััะตะฟัะธะฒะตะดะตะฝะฝะพะผ ะฟัะธะผะตัะต codeะฐ, ะตัะปะธ ะทะฐะผะพะบ ะธะฝะธัะธะฐะปะธะทะธััะตััั Hownull
, ัะธะฝั ัะพะฝะธะทะธัะพะฒะฐะฝะฝัะน (lock) ะฑัะพัะธัNullPointerException
. - ะกะธะฝั ัะพะฝะธะทะธัะพะฒะฐะฝะฝัะต ะผะตัะพะดั ะฒ Java ะฒะฝะพััั ะดะพะฟะพะปะฝะธัะตะปัะฝัะต ะทะฐััะฐัั ะฝะฐ ะฟัะพะธะทะฒะพะดะธัะตะปัะฝะพััั ะฒะฐัะตะณะพ applications. ะขะฐะบ ััะพ ะธัะฟะพะปัะทัะนัะต ัะธะฝั ัะพะฝะธะทะฐัะธั, ะบะพะณะดะฐ ะพะฝะฐ ะฐะฑัะพะปััะฝะพ ะฝะตะพะฑั ะพะดะธะผะฐ. ะัะพะผะต ัะพะณะพ, ัะฐััะผะพััะธัะต ะฒะพะฟัะพั ะพะฑ ะธัะฟะพะปัะทะพะฒะฐะฝะธะธ ัะธะฝั ัะพะฝะธะทะธัะพะฒะฐะฝะฝัั ะฑะปะพะบะพะฒ codeะฐ ะดะปั ัะธะฝั ัะพะฝะธะทะฐัะธะธ ัะพะปัะบะพ ะบัะธัะธัะตัะบะธั ัะตะบัะธะน codeะฐ.
- ะะฟะพะปะฝะต ะฒะพะทะผะพะถะฝะพ, ััะพ ะธ ััะฐัะธัะตัะบะธะน ะธ ะฝะต ััะฐัะธัะตัะบะธะน ัะธะฝั ัะพะฝะธะทะธัะพะฒะฐะฝะฝัะต ะผะตัะพะดั ะผะพะณัั ัะฐะฑะพัะฐัั ะพะดะฝะพะฒัะตะผะตะฝะฝะพ or ะฟะฐัะฐะปะปะตะปัะฝะพ, ะฟะพัะพะผั ััะพ ะพะฝะธ ะทะฐั ะฒะฐััะฒะฐัั ะทะฐะผะพะบ ะฝะฐ ะดััะณะพะน an object.
- ะ ัะพะพัะฒะตัััะฒะธะธ ัะพ ัะฟะตัะธัะธะบะฐัะธะตะน ัะทัะบะฐ ะฒั ะฝะต ะผะพะถะตัะต ะธัะฟะพะปัะทะพะฒะฐัั
synchronized
ะฒ ะบะพะฝััััะบัะพัะต ััะพ ะฟัะธะฒะตะดะตั ะบ ะพัะธะฑะบะต ะบะพะผะฟะธะปััะธะธ. - ะะต ัะธะฝั
ัะพะฝะธะทะธััะนัะต ะฟะพ ะฝะต ัะธะฝะฐะปัะฝะพะผั (no final) ะฟะพะปั, ะฟะพัะพะผั ััะพ link, ะฝะฐ ะฝะต ัะธะฝะฐะปัะฝะพะต ะฟะพะปะต ะผะพะถะตั ะธะทะผะตะฝะธัััั ะฒ ะปัะฑะพะต ะฒัะตะผั, ะฐ ะทะฐัะตะผ ะดััะณะพะน ะฟะพัะพะบ ะผะพะถะตั ะฟะพะปััะธัั ัะธะฝั
ัะพะฝะธะทะฐัะธั ะฝะฐ ัะฐะทะฝัั
an objectั
ะธ ัะถะต ะฝะต ะฑัะดะตั ะฝะธHowะพะน ัะธะฝั
ัะพะฝะธะทะฐัะธะธ ะฒะพะพะฑัะต. ะัััะต ะฒัะตะณะพ ะธัะฟะพะปัะทะพะฒะฐัั ะบะปะฐัั
String
, ะบะพัะพััะน ัะถะต ะฝะตะธะทะผะตะฝัะตะผัะน ะธ ัะธะฝะฐะปัะฝัะน.
GO TO FULL VERSION