首页 > 解决方案 > 同步访问问题

问题描述

我对同步有一些疑问:

  1. 如果我从同步方法调用非同步方法,非同步方法是否是无锁的,其他方法(实例方法)仍然可以访问非同步方法吗?

  2. 如果我有类级别的锁,其他线程可以同时访问同步的实例方法吗?

标签: javasynchronizationthread-synchronizationlocks

解决方案


  1. 进入synchronized实例方法的线程会获得一个对象的锁 ( this),但它不会锁住整个对象。它防止两个线程同时进入同步(实例)方法,但其他非同步方法仍然可以由其他线程并发执行。

  2. 类级锁将阻止线程进入任何同步的类级(静态)方法。同步实例方法获取当前实例的锁(this)。由于这些不是同一个锁,同步的实例方法不会被阻塞。

可以在此处找到该主题的良好摘要


推荐阅读