国产成人AV无码一二三区,少女1到100集,国产精品久久久久精品综合紧,巜公妇之诱感肉欲HD在线播放

文章 > java基础 > synchronized在java中的修饰

synchronized在java中的修饰

头像

小妮浅浅

2021-01-09 10:50:143498浏览 · 0收藏 · 0评论

我们说synchronized让一个线程运行时,保证其安全性。那么在其中synchronized都可以进行哪些操作呢?本篇主要讲的是synchronized的修饰用法,能够对普通方法、静态方法、代码块进行操作。下面将分别对这三种修饰情况,带来代码方面的用法展示,一起来看看synchronized的修饰用法吧。

1.修饰普通方法

public class SynTest8 implements Runnable {
    public static void main(String[] args) throws InterruptedException {
        SynTest8 instance1 = new SynTest8();
        Thread thread1 = new Thread(instance1);
        thread1.start();
    }
    @Override
    public void run() {
        if(Thread.currentThread().getName().equals("Thread-0")) {
            method1();
        }else {
            method2();
        }
    }
    public synchronized  void method1() {
        try {
            System.out.println(Thread.currentThread().getName() + "进入到了同步方法1");
            Thread.sleep(2000);
            System.out.println(Thread.currentThread().getName() + "离开同步方法1");
        } catch (InterruptedException e) {
            e.printStackTrace();
        }
    }
    public synchronized  void method2() {
        try {
            System.out.println(Thread.currentThread().getName() + "进入到了同步方法2");
            Thread.sleep(2000);
            System.out.println(Thread.currentThread().getName() + "离开同步方法2");
        } catch (InterruptedException e) {
            e.printStackTrace();
        }
    }
}

2.修饰静态方法

public class SynTest6 implements Runnable {
    public static void main(String[] args) throws InterruptedException {
        SynTest6 instance1 = new SynTest6();
        SynTest6 instance2 = new SynTest6();
        Thread thread1 = new Thread(instance1);
        Thread thread2 = new Thread(instance2);
        thread1.start();
        thread2.start();
    }
    @Override
    public void run() {
        method1();
    }
    public synchronized static void method1() {
        try {
            System.out.println(Thread.currentThread().getName() + "进入到了静态方法");
            Thread.sleep(2000);
            System.out.println(Thread.currentThread().getName() + "离开静态方法,并释放锁");
        } catch (InterruptedException e) {
            e.printStackTrace();
        }
    }
}

在这个例子中我们实例化了两个对象instance1和instance2,并且存放在了两个不同的线程中,我们测试一下访问同一个static同步方法你会发现。即使是实例不同,锁也会生效,也就是同一时刻只能有一个线程进去。

3.修饰代码块

一个线程访问一个对象中的synchronized(this)同步代码块时,其他试图访问该对象的线程将被阻塞。

/**
 * 同步线程
 */
class SyncThread implements Runnable {
   private static int count;
 
   public SyncThread() {
      count = 0;
   }
 
   public  void run() {
      synchronized(this) {
         for (int i = 0; i < 5; i++) {
            try {
               System.out.println(Thread.currentThread().getName() + ":" + (count++));
               Thread.sleep(100);
            } catch (InterruptedException e) {
               e.printStackTrace();
            }
         }
      }
   }
 
   public int getCount() {
      return count;
   }
}

以上就是synchronized在java中修饰的用法,当线程中的方法和代码块需要修饰时,我们可以选择synchronized的方法进行解决。看完本篇后,就可以对代码部分进行试验了。

关注

关注公众号,随时随地在线学习

本教程部分素材来源于网络,版权问题联系站长!

干露露和干毛毛的身材对比照片| 免费观看已满十八岁电视剧在线播.. | 哥布林杀手| 尼姑小寡妇免费播放电视剧 | 日本大片PPT免费PPT| 15岁女初中生免费观看电视剧| 《美国伦理4女警》| 台湾版《黄花闺女》完整版| 《黏糊糊的你》免费观看| 法国理伦片《粉嫩小娇乳小说| 《不再是朋友的夜晚第二季》| 国产日产亚洲系列最新版本的特点 | 日韩成人无码| 蜜糖在线观看免费高清电视剧 | 搜索引擎| 破浪男女在线观看电影完整版| 《蜜桃成熟时1997》主题曲歌..| 男生把小困困放到女生困里视频 | 歪歪漫画| 4444444在线观看免费高清...| 舌头底下舔着有小硬疙瘩视频| 白带内裤拉丝尿液| 黑人空乘伦理5| 小蜜桃免费观看高清电视剧 | 蛋软软的怎么回事| 他扒开我小流添我三男一女视频| 女性左腿又开腿肚子中间疼视频| 美国家庭式忌讳1-4| 《湿点》未增减板相似| 免费的行情网站WWW下载大全| 萝莉美女AV| 国产偷窥熟妇高潮呻吟视频AV| 老师掀起裙子让我挺进| 苍井空| 小SAO货撅起屁股扒开C打视频| 泰国电影《初次深交流》| 水蜜桃唇蜜嘟嘟唇是桃花吗| 夜半梳头在线观看| 在桌下含她的花蒂和舌头漫画| 他解开内裤把舌头进去的视频| 女朋友的妹妹ID