Thread.sleep实现中的同步关键字

时间:2015-05-10 11:50:36

标签: java android multithreading

在Thread.sleep(millis,nanos)实现中,我使用了我的Android Codebase,该函数的定义有点像这样

public static void sleep(long millis, int nanos) throws InterruptedException {

    long start = System.nanoTime();
    long duration = (millis * NANOS_PER_MILLI) + nanos;
        Object lock = currentThread().lock;
        synchronized (lock) {
            while (true) {

                  ///implementation
            }
        }
    }

currentThread()返回调用者线程,lockThread类中的对象(new Object())。

  1. 这里假设一个线程当前正在执行,我再次从第二个线程调用sleep(),然后不会更改变量startduration,它们仍在使用第一个线程?整个函数不应该synchronized来阻止这种情况吗?

  2. 选择lock作为同步对象有何意义?无论如何,Thread的单个实例无法同时多次调用sleep()

0 个答案:

没有答案