哪位知道这在呢称前加@是什么意思锁啊

    通过短信保存号码时会出现正常号码前多个+86,手动删除+86后保存即可

    86指的是手机号码是中国的

    大陆的手机号前都加86

    当国外的朋友给你这个手机打电话的时候,需要+86

synchronized 加到 static 方法前面是给class 加锁,即类锁;而synchronized 加到非静态方法前面是给对象上锁。这两者的区别我用代码来演示下:

  1. 对象锁和类锁是不同的锁,所以多个线程同时执行这2个不同锁的方法时,是异步的。

main函数中执行代码如下:

可以看出由于 doLongTimeTaskA和doLongTimeTaskB都是类锁,即同一个锁,所以 A和B是按顺序执行,即同步的。而C是对象锁,和A/B不是同一种锁,所以C和A、B是 异步执行的。(A、B、C代指上面的3中方法)。

我们知道对象锁要想保持同步执行,那么锁住的必须是同一个对象。下面就修改下上面的来证明:

从结果看来,对象锁锁的对象不一样,分别是mTaska , mTaskb,所以线程A和线程B调用 doLongTimeTaskC 是异步执行的。

但是,类锁可以对类的所有对象的实例起作用。只需修改ThradA
和 ThreadB,main 方法不做改变,修改如下:

可以看出 在线程A执行完doLongTimeTaskA方法后,线程B才会获得该类锁接着去执行doLongTimeTaskA。也就是说,类锁对所有的该类对象都能起作用。

1. 如果多线程同时访问同一类的 类锁(synchronized 修饰的静态方法)以及对象锁(synchronized 修饰的非静态方法)这两个方法执行是异步的,原因:类锁和对象锁是2中不同的锁。
2. 类锁对该类的所有对象都能起作用,而对象锁不能。

可选中1个或多个下面的关键词,搜索相关资料。也可直接点“搜索资料”搜索整个问题。

我要回帖

更多关于 在呢称前加@是什么意思 的文章

 

随机推荐