试着回答一下:
1.实例对象当然可以调用此对象的静态方法
2.阻塞和睡眠不一样。阻塞是占用cup资源等待某个事件发生,比如等待一个同步方法执行的返回。睡眠就是挂起suspend,释放资源,在条件允许时候,比如睡醒了,进入ready态,等待再次占用cup执行!建议看看操作系统进程的5种状态!
3.不同操作系统不一样,资源竞争,还是时间片轮旬?同一个操作系统上每次执行也不一样。是根据每一次执行的实际情况。
4.从你的程序看,A和B只能各睡1000ms,然后结束程序,因为没有一个while(true)的循环。

解决方案 »

  1.   

    解答:
    1、sleep()是Thread的静态方法,一般程序线程都是调用Thread.sleep(),sleep是使当前调用的线程sleep。
    楼主:"某个线程的sleep()方法"这个理解有问题。具体的线程不可能有sleep,除非你覆盖实现你自己的sleep(我想不可能吧)。
    2、不一样。阻塞是占用cup资源等待某个事件发生,睡眠只是让线程离开cpu,和挂起也不一样,如果只有一个线程,你用了sleep,可能sleep后马上就会运行。
    3、无法知道,操作系统会维护个线程就绪队列。关于队列中的次序,和起线程的时间有关(你不能确切知道)。如果是严格意义地同时发生,就更不能保证次序。
    4、如果楼主程序是循环处理sleep,也不会象你想象的那样。
    这个问题,要解释清楚,很花时间,但关于线程,不能用一般的思路,先记住一点就是:线程是同时进行的。多看看书吧,在实际地将书上的例子敲到电脑里试试。
      

  2.   

    楼上那位兄弟,谢谢解答!
    1,我说"某个线程的sleep()方法",你说我理解有问题,你说具体的线程不可能有 sleep,我觉得可以有的,因为自定义的线程如果继承Thread的话,Thread的satic方法sleep方法也会被继承过来的?不对吗?
    2,你说:"线程是同时进行的",我并不赞成,因为任何时刻处理机只被一个线程占有,线程是轮流交换时间片进行的,你说呢?
    3,还有,可不可以再帮我解释一下挂起,睡眠,等待等的区别?
    真诚对你的解答表示感谢!我会尽快解贴,给你送分!
      

  3.   

    1、sleep是静态的,thread无论有多少子类,都只有1个sleep,因此对于sleep不存在继承,(我忘记了静态方法是否可以被覆盖),所以我这样说。
    2、你说得对,在一个cpu时候,的确是这样的,但开始你还是“线程是同时进行的”这样来理解吧。即使是一个cpu,你也没有办法确切知道在某个确定时刻哪个线程在跑。
    3、这三个概念,书上讲的很多了,我想我也不会比书上讲的好。