我们2个人等于2个线程,我们跑的一样快。 每跑1米,我们都休息100秒,然后大喊一声。 你猜我们的最后结果是什么? 我的理解:
  觉得跑得太慢,应该给我们长一点的距离
就是说让线程运行得久一些。

解决方案 »

  1.   

    晕,你想象如果大家都喊的话你听到的声音是什么?
    是不是交叉的,这个喊完那个喊,而不是像单线程那样,一个人喊完了另一个人喊.就像你的例子里那样,你认为another执行完了,两个人一起跑的,你怎么知道人家跑完了呢.
      

  2.   

    这跟时间长有啥关系有点时间够分析就行了
    这个问题很难让人看明白
    但是你心中的疑惑我很明白,你一直把多线程当原始的串行来看待。
    cpu是串行的没错,但是时间片轮转速度飞快啊。
      

  3.   

    看看,理解,运行一下我下面的多线程的例子,或许你就会明白了:public class Sample03 implements Runnable {
    private int num = 1;
    public void run() {
    while (num < 21) {
    System.out.println(Thread.currentThread().getName() + "----->" + num);
    try {
    Thread.sleep(1);
    } catch (InterruptedException e) {
    e.printStackTrace();
    }
    num++;
    }
    }
    /**
     * @param args
     */
    public static void main(String[] args) {
    Sample03 test = new Sample03();

    Sample01 s1 = new Sample01("s1");
    Sample01 s2 = new Sample01("s2");

    Thread t1 = new Thread(test);
    Thread t2 = new Thread(test);
    Thread t3 = new Thread(test);
    t1.start();
    t2.start();
    t3.start();

    try {
    Thread.sleep(5);
    } catch (InterruptedException e) {
    e.printStackTrace();
    }

    t1.setName("t1");
    t2.setName("t2");
    t3.setName("t3");

    int num = 1;
    while (num < 21) {
    System.out.println(Thread.currentThread().getName() + "----->" + num++);
    try {
    Thread.sleep(1);
    } catch (InterruptedException e) {
    e.printStackTrace();
    }
    }
    System.out.println("\nmain is over");
    }
    }
      

  4.   

    宏观上并行,
    微观上串行。
    这就是多线程。两个人跑步就是两个子线程。
    两个同时sleep,同进又run,那有意义吗?