线程同步加锁问题

wangwffgqeg wangwffgqeg 墨衍会员 · AI 创作全网分发 墨衍智能分发 通过墨衍一键同步至各平台 可同步平台 CSDN微信公众号微博知乎掘金百家号博客园抖音小红书 你的文章也可以这样分发 墨衍会员 ¥399起/年,写一次发全网 我也要 + 加入社区
public class SynchronizedTest implements Runnable
{
private Integer i = new Integer(1);

public void a(){
synchronized(i){
i = new Integer(2);
try{
Thread.sleep(5000);
}catch (Exception e){

}
System.out.println("a() i = "+i);
}
}

public void b(){
System.out.println("b() i ="+ i);
}

public void setI(Integer i){
this.i = i;
}

public void run(){
a();
System.out.println("a()---------------");
}

public static void main(String[] args){
SynchronizedTest st = new SynchronizedTest();

Thread t = new Thread(st);
t.start();
try{
Thread.sleep(1000);
}catch(Exception e){}

st.b();
st.setI(5);


}
}
/*
*为什么输出结果是
*b() i = 2
*a() i = 5
*a()--------------
*为什么是这样的结果,synchronized(i)不是已经把 i 锁住了吗?怎么还可以修改 i 的值呀?
*/
...全文

相关推荐

Java双重检查加锁单例模式的详解

今天小编就为大家分享一篇关于Java双重检查加锁单例模式的详解,小编觉得内容挺不错的,现在分享给大家,具有很好的参考价值,需要的朋友一起跟随小编来看看吧

weixin_38514620

c++线程加锁

代码中的临界区变量(cs)就可以看作是变量s的锁,当函数EnterCriticalSection返回时,当前线程就获得了这把锁,之后就是对变量的访问了。访问完成后,调用LeaveCriticalSection表示释放这把锁,允许其他线程继续使用它。 

lk_park1

python互斥锁、加锁、同步机制、异步通信知识总结

本篇文章给大家详细讲述了python互斥锁、加锁、同步机制、异步通信相关知识点,对此有兴趣的朋友收藏下。

weixin_38537968

C++开发:为什么多线程读写shared_ptr要加锁的详细介绍

本篇文章介绍了,在C++中为什么多线程读写shared_ptr要加锁的详细说明。需要的朋友参考下

weixin_38595690

Python多线程编程之多线程加锁操作示例

本文实例讲述了Python多线程编程之多线程加锁操作。分享给大家供大家参考,具体如下: Python语言本身是支持多线程的,不像PHP语言。 下面的例子是多个线程做同一批任务,任务总是有task_num个,每次线程做一个任务(print),做完后继续取任务,直到所有任务完成为止。 # -*- coding:utf-8 -*- #! python2 import threading start_task = 0 task_num = 10000 mu = threading.Lock() ###通过工厂方法获取一个新的锁对象 class MyThread(threading.Thread):

weixin_38553381
评论 18
收藏 已收藏
分享
返回顶部
wangwffgqeg
Java SE 62,620 成员 307,251 内容