synchronized三种使用方式(有图)

下一篇: 并发编程的基础

什么是线程安全

在这里插入图片描述
从图中可以看出线程安全只要包括变量在多个线程之间共享、生命周期内状态可以改变、最后结果和预期一致,就是线程安全的。

Synchronized的三种使用方式

1.普通同步方法(实例方法)锁是当前实例对象,进入同步代码前要获得当前实例的锁
2.静态同步方法,锁是当前类的class对象,进入同步代码前要获得当前类对象的锁
3.同步方法块,锁是括号里面的对象,对给定对象加锁,进入同步代码库前要获得给定对象的锁。

作用在实例方法

  • 多个线程访问同一个对象的同一个synchronized方法
public class SynchronizedTest implements Runnable{
   

    static int i = 0;

    /**
     * 修饰实例方法
     */
    public synchronized void increase(){
   
        System.out.println("测试:"+Thread.currentThread().getName()+",i="+i++);
    }

    @Override
    public void run() {
   
        for(int j = 0;j < 10; j++){
   
            increase();
        }
    }

    public static void main(String[] args) throws InterruptedException {
   
        SynchronizedTest synchronizedTest = new SynchronizedTest();
        Thread t1 = new Thread(synchronizedTest);
        Thread t2 = new Thread(synchronizedTest);
        t1.setName("线程1");
        t1.start();
        t1.join();
        t2.setName("线程2");
        t2.start();
        t2.join();
        System.out.println
  • 2
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值