java的 多线程应用 加锁解锁,使用多线程应当注意什么
发布网友
发布时间:2022-04-30 04:45
我来回答
共1个回答
热心网友
时间:2023-10-13 17:55
1,加锁和解锁就是把一段代码括起来,也可以说是同步,
2,一般需要加锁的代码涉及到了共享数据,如果多个线程都开始执行这段代码那么就会出现异常结果,
3,给这段代码开始和结尾加锁以后这段代码只能有一个线程进来,数据就安全了,比如下面这段代码,
int i = 100;
if( i > 0) {
System.out.println( i -- );
}
假如这里有4个线程执行这段代码,结果就可能出现负数,因为 i = 1的时候,假如线程1*到了CPU的执行权,执行到了System.out.println( i -- );这里,但是还没有执行,这时候线程2抢到了执行权,因为 i 还没有进行自减,所以线程2也执行到了System.out.println( i -- );这句话,这时候无论谁先执行,i 就等于0了,再次执行的话就出现了负数,
热心网友
时间:2023-10-13 17:55
1,加锁和解锁就是把一段代码括起来,也可以说是同步,
2,一般需要加锁的代码涉及到了共享数据,如果多个线程都开始执行这段代码那么就会出现异常结果,
3,给这段代码开始和结尾加锁以后这段代码只能有一个线程进来,数据就安全了,比如下面这段代码,
int i = 100;
if( i > 0) {
System.out.println( i -- );
}
假如这里有4个线程执行这段代码,结果就可能出现负数,因为 i = 1的时候,假如线程1*到了CPU的执行权,执行到了System.out.println( i -- );这里,但是还没有执行,这时候线程2抢到了执行权,因为 i 还没有进行自减,所以线程2也执行到了System.out.println( i -- );这句话,这时候无论谁先执行,i 就等于0了,再次执行的话就出现了负数,