并发编程学习笔记3

1.线程状态

  • 从操作系统层面:

        CPU会将时间片分给可运行状态的线程,使其变成运行状态。

  • 从Java API层面:

        NEW、RUNNABLE、TERMINATED、BLOCKED、WAITING、TIMED_WAITING

        NEW 线程刚被创建,但是还没有调用 start() 方法 

        Java API 层面的 RUNNABLE 状态涵盖了 操作系统 层面的 【可运行状态】、【运行状态】          和【阻塞状态】(由于 BIO 导致的线程阻塞,在 Java 里无法区分,仍然认为 是可运行)

        BLOCKED , WAITING , TIMED_WAITING 都是 Java API 层面对【阻塞状态】的细分

        TERMINATED 当线程代码运行结束

2.synchronized关键字

        作用:它采用互斥的方式让同一 时刻至多只有一个线程能持有【对象锁】,其它线程再想获取这个【对象锁】时就会阻塞住。这样就能保证拥有锁 的线程可以安全的执行临界区内的代码,不用担心线程上下文切换

        使用方法:

public void abc() {
    synchronized (this) {
        log.info("111");
    }
}

public synchronized void abd() {
    log.info("111");
}

        使用synchronized的注意事项:

  • 访问共享资源的所有方法都要加锁
  • 注意锁住的是不是同一个对象
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值