为了账号安全,请及时绑定邮箱和手机立即绑定

线程同步和执行顺序

线程同步和执行顺序

慕尼黑5688855 2021-06-28 20:03:10
所以想象一下有一个类 A 实现了 Runnable ,如下所示:class A implements Runnable {    C c;    Thread t;    public A(C c){        this.c = c;        t = new Thread(this);    }    public void start(){        t.start();    }    public void run(){        for (int i = 0; i < 5; i++){            c.doIt();        }    }}C 类只包含一个同步方法,该方法按字符打印当前线程详细信息,如下所示:class C {    synchronized void doIt(){        String s = Thread.currentThread().toString();        for (int i = 0; i < s.length(); i++) {            System.out.print(s.charAt(i));        }        System.out.println();    }}如果我在主方法中创建 2 个线程,同时使用 C 类的共享对象 c,我不应该收到线程执行的随机顺序,因为只有 doIt 方法是同步的吗?我想象的方式是,在 t1 完成 doIt() 迭代后,t2 线程将能够接收控制。似乎锁是由 t1 获取的,直到线程的整个循环完成它的工作。所以我的问题是 - 同步是否意味着线程也必须在另一个线程开始之前完成(不仅是 doIt() 的同步)?
查看完整描述

1 回答

  • 1 回答
  • 0 关注
  • 156 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信