A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

© 唐巍 黑马帝   /  2012-3-15 01:33  /  2296 人查看  /  2 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

多线程中,使用同步的前提是什么?同步代码块,同步函数,静态同步函数用的锁分别是什么?

2 个回复

倒序浏览
问题的原因是:当多条语句在操作同一个线程共享数据时,一个线程对多条语句只执行了一部分,还没有执行完。另一个线程参与进来,导致共享数据的错误。
解决办法,对多条操作共享数据的语句,只能让一个线程都执行完,再执行过程中其他线程不可以参与执行。
同步的前提:
1,必须要有两个或者两个以上的线程。
2,必须是多个线程使用同一个锁。
加入同步,既有好处,也是有弊端的:
好处:解决了多线程的安全问题。
弊端:多个线程需啊哟判断锁,较为消耗资源。
同步代码块用的同步锁可以是任意一个对象,同步函数用的是this锁,而静态同步函数用的同步锁是Class对象

评分

参与人数 1技术分 +1 收起 理由
房宝彬 + 1

查看全部评分

回复 使用道具 举报
同步代码块的锁可以是任意对象synchronized(Object obj)
同步函数的锁是其所在类的对象(this)
静态同步函数的锁是该类的字节码文件对象(类名.class)
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马