为了账号安全,请及时绑定邮箱和手机立即绑定

Java并发之synchronized

标签:
Java

synchronized关键字最主要有以下3种应用方式

修饰实例方法,作用于当前实例加锁,进入同步代码前要获得当前实例的锁;实例锁,一个实例一把锁

修饰静态方法,作用于当前类对象加锁,进入同步代码前要获得当前类对象的锁;对象锁,一个对象一把锁

修饰代码块,指定加锁对象,对给定对象加锁,进入同步代码库前要获得给定对象的锁;对象锁,一个对象一把锁

实例锁public class SuperHakceTest implements Runnable{    public static Integer flag = 0;    public synchronized void instanse(){        flag ++;    }    @Override    public void run() {        for(int i = 0;i < 1000;i ++){            instanse();        }    }    public static void main(String[] args) throws Exception{        SuperHakceTest superHakceTest = new SuperHakceTest();        Thread thread1 = new Thread(superHakceTest);        Thread thread2 = new Thread(superHakceTest);        Thread thread3 = new Thread(superHakceTest);        thread1.start();thread2.start();thread3.start();        thread1.join();thread2.join();thread3.join();        System.out.println("LAST FLAG = " + SuperHakceTest.flag);    }}对象锁public class SuperHakceTest implements Runnable{    public static Integer flag = 0;    public static synchronized void instanse(){        flag ++;    }    @Override    public void run() {        for(int i = 0;i < 1000;i ++){            instanse();        }    }    public static void main(String[] args) throws Exception{        SuperHakceTest superHakceTest1 = new SuperHakceTest();        SuperHakceTest superHakceTest2 = new SuperHakceTest();        SuperHakceTest superHakceTest3 = new SuperHakceTest();        Thread thread1 = new Thread(superHakceTest1);        Thread thread2 = new Thread(superHakceTest2);        Thread thread3 = new Thread(superHakceTest3);        thread1.start();thread2.start();thread3.start();        thread1.join();thread2.join();thread3.join();        System.out.println("LAST FLAG = " + SuperHakceTest.flag);    }}//this,当前实例对象锁synchronized(this){    for(int j=0;j<1000000;j++){        i++;    }}//class对象锁synchronized(AccountingSync.class){    for(int j=0;j<1000000;j++){        i++;    }}

点击查看更多内容
TA 点赞

若觉得本文不错,就分享一下吧!

评论

作者其他优质文章

正在加载中
  • 推荐
  • 评论
  • 收藏
  • 共同学习,写下你的评论
感谢您的支持,我会继续努力的~
扫码打赏,你说多少就多少
赞赏金额会直接到老师账户
支付方式
打开微信扫一扫,即可进行扫码打赏哦
今天注册有机会得

100积分直接送

付费专栏免费学

大额优惠券免费领

立即参与 放弃机会
意见反馈 帮助中心 APP下载
官方微信

举报

0/150
提交
取消