比如:
public synchronized void ff(){
..............
.............
.............
..............
............. //这里时间片用完。A线退出
.............
..............
.............
.............
..............
.............
.............
}
B线程无法进入,是吗????
是不是一定要等A返回,继续执行完这段,才可以???
public synchronized void ff(){
..............
.............
.............
..............
............. //这里时间片用完。A线退出
.............
..............
.............
.............
..............
.............
.............
}
B线程无法进入,是吗????
是不是一定要等A返回,继续执行完这段,才可以???
synchronized 关键字的作用是由系统自动给被synchronized修饰的方法或代码块加锁,使被修饰的代码在同一时间只能被一个线程访问。我的疑问:难道同一时间,能被两个线程访问,有鬼了。CPU也只有在同一时间被一个资源访问,当然不是说多核的CPU
嗯我又明白你的意思了。。你是说既然访问这一个资源在某一时刻就只有一个线程访问那么有必要加锁吗?是吧。没错在单核系统中确实在某一确定时刻下只能有一个线程访问某一资源。那你可以这样认为synchronized可以保证在某一段时间内只有一个线程访问。比如你前一个贴中,当执行一个语句块时,它并没有执行完就可以导致数据不正确。
也要等它醒过来。其它线程才能使用这个方法吗?十分奇怪。