欢迎访问悦橙教程(wld5.com),关注java教程。悦橙教程  java问答|  每日更新
页面导航 : > > 文章正文

synchronized与static synchronized的区别,

来源: javaer 分享于  点击 29389 次 点评:168

synchronized与static synchronized的区别,


大家在学习java多线程的时候肯定会遇到这个问题,而且在面试的时候也可能会谈到java多线程这一块的知识。今天我们就来看看这个东西~~~

synchronized 这个是对类实例进行加锁,可以简称为“实例锁”或者是“对象锁”。当某个线程调用synchronized方法的时候,就会给它加上了一个锁,其他线程就会无法访问,等到这个锁被释放,别的线程拿到这个锁的时候,才可以访问该方法。

static synchronized这个是“全局锁”或者是“类锁”,该锁针对的是类,不管实例了多少个对象,线程都共享该锁。

下面我们来看代码:

 1 import java.util.concurrent.TimeUnit;
 2 
 3 public class Test {
 4 public static void main(String[] args) {
 5 Phone phone1 = new Phone();
 6 Phone phone2 = new Phone();
 7 
 8 //这里使用的是lambda表达式
 9 new Thread(() -> {phone1.listening(); }, "A线程").start();
10 
11 try {
12 TimeUnit.SECONDS.sleep(1);
13 } catch (InterruptedException e) {
14 e.printStackTrace();
15 }
16 
17 new Thread(() -> {phone2.reading(); }, "B线程").start();
18 }
19 }
20 
21 class Phone{
22 
23 public static synchronized void listening() {
24 try {
25 TimeUnit.SECONDS.sleep(3);
26 } catch (InterruptedException e) {
27 e.printStackTrace();
28 }
29 System.out.println("该手机正在播放音乐~");
30 }
31 
32 public static synchronized void reading() {
33 System.out.println("该手机正在显示电子书~");
34 }
35 }

运行结果是:


但是当我把reading方法上的static 这个关键字去掉后,代码是这样的 :

 1 import java.util.concurrent.TimeUnit;
 2 
 3 public class Test {
 4 public static void main(String[] args) {
 5 Phone phone1 = new Phone();
 6 Phone phone2 = new Phone();
 7 
 8 //这里使用的是lambda表达式
 9 new Thread(() -> {phone1.listening(); }, "A线程").start();
10 
11 try {
12 TimeUnit.SECONDS.sleep(1);
13 } catch (InterruptedException e) {
14 e.printStackTrace();
15 }
16 
17 new Thread(() -> {phone2.reading(); }, "B线程").start();
18 }
19 }
20 
21 class Phone{
22 
23 public static synchronized void listening() {
24 try {
25 TimeUnit.SECONDS.sleep(3);
26 } catch (InterruptedException e) {
27 e.printStackTrace();
28 }
29 System.out.println("该手机正在播放音乐~");
30 }
31 
32 public synchronized void reading() {
33 System.out.println("该手机正在显示电子书~");
34 }
35 }

运行结果是:

好了,大家在仔细品品~~~

相关文章

    暂无相关文章
相关栏目:

用户点评