本帖最后由 microsoftq 于 2010-08-03 16:18:04 编辑

解决方案 »

  1.   

    调用了 t1.start();
    两个线程都在执行 没有顺序的
      

  2.   

    public void run()
        {
            try
            {
                Thread.sleep(500);
            }
            catch (Exception e)
            {
                e.printStackTrace();
            }
            System.out.println("I'm from thread1");
        }
    这样你再试试看
      

  3.   


    这样确实是按照最初的想法顺序执行,但是这是在线程1 sleep时候
      

  4.   


    请指教,同一时间,cpu是如何分配资源给不同线程使他们同时运行?多谢。
      

  5.   

    在同一时刻,单一cup只能处理一件事情,但是在同一时间段内cup可以通过中断等方式实现多线程和多进程,这些主要是多任务系统和cup等硬件设备之间的事情,没有在java这种高层语言中体现出来,在java中仅可认为一个进程中的几个线程是同时进行的
    线程之间的优先级只涉及到某个高优先级线程被切换到的概率要大于某个低优先级线程,但不是说要等到高优先级线程执行完了才进入低优先级线程,否则多线程还有什么意义
      

  6.   

    从你调用start()方法的瞬间,执行顺序就不确定了
      

  7.   

    同一时间内,不同的线程是不可能同时运行的。他们是在极短的时间内交叉执行,只是计算机的速度很快,我们察觉不到,以为是他们是同时进行。在一段时间内CPU选择哪个线程执行是随机的
      

  8.   

    这种情况是可能的,但是不是被中断,而一般是他自己要求等待某个条件或者某个对象的状态,就是notify和wait
      

  9.   


    我的意思是 不是它自己主动等待,而是一个线程是否会在运行过程中被迫释放cpu资源,而另一个线程开始运行?
      

  10.   

    线程和线程之间访问资源没有同步的话,他们谁都可以"同时去访问",比如说java中两个线程同时访问一个对象,如果他们没有在访问这个对象时对他加锁,那么其他线程照样可以访问,而且不会等待,如果这个共享对象被某个线程加上了锁,那么其他线程在访问时需要这个线程对这个对象解锁