浅析Java多线程同步synchronized
单线程是安全的,因为线程只有一个,不存在多个线程抢夺同一个资源
代码例子:
publicclassSingleThread{
intnum=10;
publicvoidadd(){
while(num<13){
num++;
try{
Thread.sleep(1000);
}
catch(Exceptione){
System.out.println("中断");
}
System.out.println(num);
}
}
publicstaticvoidmain(String[]args){
Threadthread=Thread.currentThread();//获取当前运行的线程对象
thread.setName("单线程");//线程重命名
System.out.println(thread.getName()+"正在运行");
SingleThreadst=newSingleThread();
st.add();
}
}
多线程安全,synchronized同步代码块
synchronized(对象){};//同步代码块
synchronized返回值方法名(){};//同步方法
classOne{
intnum=10;
publicvoidadd(){
synchronized(this){//同步代码块,同步方法也可以实现效果synchronizedvoidadd(){};
num++;
try{
Thread.sleep(1000);
}catch(InterruptedExceptione){
System.out.println("中断");
}
System.out.println(num);
}
}
}
classTwoimplementsRunnable{
Oneone=newOne();
@Override
publicvoidrun(){
one.add();//调用add方法
}
}
publicclassSynch{
publicstaticvoidmain(String[]args){
Twotwo=newTwo();
Threadt1=newThread(two);//创建三个子线程
Threadt2=newThread(two);
Threadt3=newThread(two);
t1.start();
t2.start();
t3.start();
}
}
注意:观察去除synchronized关键字的运行结果区别!
正常运行结果:
11
12
13
热门推荐
10 八一幼儿祝福语大全简短
11 公司乔迁食堂祝福语简短
12 婚礼结束聚餐祝福语简短
13 儿媳买车妈妈祝福语简短
14 毕业送礼老师祝福语简短
15 同事辞职正常祝福语简短
16 恭贺新婚文案祝福语简短
17 金店立秋祝福语简短英文
18 婆婆高寿祝福语大全简短