在指定的毫秒数内让当前正在执行的线程休眠(暂停执行) , 此操作受到系统计时器和调度程序精度和准确性的影响。 让其他线程有机会继续执行, 但它并不释放对象锁。 也就是如果有 Synchronized 同步块, 其他线程仍然不能访问共享数据。 注意该方法要捕获异常比如有两个线程同时执行(没有 Synchronized), 一个线程优先级为 MAX_PRIORITY, 另一个为MIN_PRIORITY, 如果没有 Sleep()方法, 只有高优先级的线程执行完成后, 低优先级的线程才能执行; 但当高优先级的线程 sleep(5000)后, 低优先级就有机会执行了。总之, sleep()可以使低优先级的线程得到执行的机会, 当然也可以让同优先级、 高优先级的线程有执行的机会。yield()方法和 sleep()方法类似, 也不会释放“锁标志” , 区别在于, 它没有参数, 即 yield()方法只是使当前线程重新回到可执行状态, 所以执行 yield()的线程有可能在进入到可执行状态后马上又被执行, 另外 yield()方法只能使同优先级或者高优先级的线程得到执行机会, 这也和 sleep()方法不同。Thread 的非静态方法 join()让一个线程 B“加入” 到另外一个线程 A 的尾部。 在 A 执行完毕之前, B 不能工作。Thread t = new MyThread();t.start();t.join();保证当前线程停止执行, 直到该线程所加入的线程完成为止。 然而, 如果它加入的线程没有存活, 则当前线程不需要停止。本文参与了 【 HarmonyOS NEXT 技术问答冲榜,等你来战!】欢迎正在阅读的你也加入。
在指定的毫秒数内让当前正在执行的线程休眠(暂停执行) , 此操作受到系统计时器和调度程序精度和准确性的影响。 让其他线程有机会继续执行, 但它并不释放对象锁。 也就是如果有 Synchronized 同步块, 其他线程仍然不能访问共享数据。 注意该方法要捕获异常比如有两个线程同时执行(没有 Synchronized), 一个线程优先级为 MAX_PRIORITY, 另一个为MIN_PRIORITY, 如果没有 Sleep()方法, 只有高优先级的线程执行完成后, 低优先级的线程才能执行; 但当高优先级的线程 sleep(5000)后, 低优先级就有机会执行了。总之, sleep()可以使低优先级的线程得到执行的机会, 当然也可以让同优先级、 高优先级的线程有执行的机会。
yield()方法和 sleep()方法类似, 也不会释放“锁标志” , 区别在于, 它没有参数, 即 yield()方法只是使当前线程重新回到可执行状态, 所以执行 yield()的线程有可能在进入到可执行状态后马上又被执行, 另外 yield()方法只能使同优先级或者高优先级的线程得到执行机会, 这也和 sleep()方法不同。
Thread 的非静态方法 join()让一个线程 B“加入” 到另外一个线程 A 的尾部。 在 A 执行完毕之前, B 不能工作。Thread t = new MyThread();t.start();t.join();保证当前线程停止执行, 直到该线程所加入的线程完成为止。 然而, 如果它加入的线程没有存活, 则当前线程不需要停止。
本文参与了 【 HarmonyOS NEXT 技术问答冲榜,等你来战!】欢迎正在阅读的你也加入。