先作判断:
怎么产生的
a,程序是否为多线程
b,是否有共享数据
c,是否有多条语句对共享数据进行操作
解决方案:
把c步骤进行管理。
1),同步代码块
格式:
synchronized(对象){
需要被锁的代码
}
注意:对象可以是任意对象,但同步的对象必须一致。
2),同步方法
把synchronized添加到方法声明上。
注意:此时同步的是this对象。
2,静态方法的锁是谁
当前类的字节码文件对象。
3,run()与start()的区别
run()仅仅是普通的调用
start()做了两件事:启动线程,调用run()
4,sleep()与wait()的区别
sleep():表示睡眠,必须指定睡眠时间,不释放锁。
wait():表示等待,可以不指定睡眠时间,必须释放锁。
郑洲尚学堂
6月Java课程班开课时间郑州文化路Java班
Java班:2017年06月20日
全程就业课程时长:四个半月
Android班:2017年06月20日
全程就业课程时长:四个半月