java Thread.sleep()的问题

vzhchv007 2009-08-27 01:01:37
java中 Thread.sleep();这个方法会把该sleep对象锁定么?(资料上说是锁定的,但是举例子不是)
如果锁定其它线程还能用么?

package thread;

public class MyThread001 extends Thread {

public void run() {
for (int a = 0; a < 20; a++) {
try {
Thread.sleep(10);
} catch (Exception e) {
}
System.out.println(Thread.currentThread().getName() + " " + a);
}


}


static long id = 0;

public static void main(String args[]) {
MyThread001 t1 = new MyThread001();
MyThread001 t2 = new MyThread001();
t1.start();
t2.start();

}
}


...全文
533 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
vzhchv007 2009-08-27
  • 打赏
  • 举报
回复
谢谢大家,上午有人说错了,弄的我白研究一上午.
haojian11 2009-08-27
  • 打赏
  • 举报
回复
t1线程执行到Thread.sleep(10); 会休眠10毫秒,t2执行到这,也会休眠10毫秒。10毫秒后,代码继续往下执行,执行System.out.println(Thread.currentThread().getName() + " " + a);
。并没有锁定。

看是否共享类变量,关键看你new了几次自定义线程类的对象,同一个对象的类变量会被共享,不同对象的,肯定就不会了。
tz_dzg 2009-08-27
  • 打赏
  • 举报
回复
有意思
lovecj6185 2009-08-27
  • 打赏
  • 举报
回复
用sleep只是让线程休眠而已,不存在锁定的问题
frilly 2009-08-27
  • 打赏
  • 举报
回复
public static void sleep(long millis,int nanos)
throws InterruptedException


在指定的毫秒数加指定的纳秒数内让当前正在执行的线程休眠(暂停执行)。该线程不丢失任何监视器的所属权。


其它线程当然可以运行了


还有一点,,继承Thread的类,每个类都有自己的类变量,而实现Runnable接口的类,则是共享类变量.

62,615

社区成员

发帖
与我相关
我的任务
社区描述
Java 2 Standard Edition
社区管理员
  • Java SE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧