无法停止思考 2021-11-08 17:46 采纳率: 0%
浏览 18

java线程锁,两个线程同一个方法用不同的锁

同一个方法 ,两个线程任务,用不同的对象的锁,当其第一个线程释放锁1,第二个线程 才能进入?


public class RunTest implements Runnable{
    String tname;
    static int num = 0;
    Object res;
    public RunTest(String tname,Object res) {
        // TODO Auto-generated constructor stub
        this.tname = tname;
        this.res = res;
    }
    
    @Override
    public void run() {
        // TODO Auto-generated method stub
        synchronized (res) {
            while(num<10){
                num ++;
                System.out.println(tname+"->"+num);
                if(num==3){
                        try {
                            res.wait();
                        } catch (InterruptedException e) {
                            // TODO Auto-generated catch block
                            e.printStackTrace();
                        }
                }
            }
            
        }
    }

}

public static void main(String[] args) {
        Object res1 = new Object();
        Object res2 = new Object();
        RunTest t1 = new RunTest("任务1",res1);
        RunTest t2 = new RunTest("任务2",res2);
        new Thread(t1).start();
        try {
            Thread.sleep(500);
        } catch (InterruptedException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }
        new Thread(t2).start();
    }

输出结果
任务1->1
任务1->2
任务1->3
任务2->4
任务2->5
任务2->6
任务2->7
任务2->8
任务2->9
任务2->10

  • 写回答

2条回答 默认 最新

  • 纯白微风 2021-11-08 17:52
    关注

    对结果有什么疑问吗,你的预期是什么呢

    评论

报告相同问题?

问题事件

  • 创建了问题 11月8日

悬赏问题

  • ¥50 安装华大九天aether
  • ¥30 关于#算法#的问题:运用EViews第九版本进行一系列计量经济学的时间数列数据回归分析预测问题 求各位帮我解答一下
  • ¥15 setInterval 页面闪烁,怎么解决
  • ¥15 如何让企业微信机器人实现消息汇总整合
  • ¥50 关于#ui#的问题:做yolov8的ui界面出现的问题
  • ¥15 如何用Python爬取各高校教师公开的教育和工作经历
  • ¥15 TLE9879QXA40 电机驱动
  • ¥20 对于工程问题的非线性数学模型进行线性化
  • ¥15 Mirare PLUS 进行密钥认证?(详解)
  • ¥15 物体双站RCS和其组成阵列后的双站RCS关系验证