栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 面试经验 > 面试问答

是否同时执行两个同步方法

面试问答 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

是否同时执行两个同步方法

如果t1访问m1方法(同步方法),t2线程可以同时访问m2方法(同步方法)吗?

synchronized
关键字适用于 目标水平 ,且只有一个线程可持有对象的锁。因此,只要您在谈论同一个对象,那么
t2
它将等待
t1
释放进入时获得的锁
m1

但是,线程可以通过调用来释放锁而无需从方法中返回

Object.wait()

如果不是,则t2的状态是什么?

它会紧紧地等待

t1
释放锁(从方法返回或调用
Object.wait()
)。具体来说,它将处于
BLOCKED
状态。

线程的线程状态被阻塞,等待监视器锁定。
处于阻塞状态的线程正在等待监视器锁定以输入同步块/方法,或者在调用后重新输入同步块/方法

Object.wait

样例代码:

public class Test {    public synchronized void m1() {        try { Thread.sleep(2000); }        catch (InterruptedException ie) {}    }    public synchronized void m2() {        try { Thread.sleep(2000); }        catch (InterruptedException ie) {}    }    public static void main(String[] args) throws InterruptedException {        final Test t = new Test();        Thread t1 = new Thread() { public void run() { t.m1(); } };        Thread t2 = new Thread() { public void run() { t.m2(); } };        t1.start();        Thread.sleep(500);        t2.start();        Thread.sleep(500);        System.out.println(t2.getState());    }}

输出:

BLOCKED


转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/449927.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号