class Runnable0 implements Runnable {
public void run() {
System.out.println(Thread.currentThread().toString()+"\t\t"
+ System.currentTimeMillis() );
}
}public class RunnableDemo01 {
public static void main (String args[]){
Runnable0 r = new Runnable0();
Thread t1 = new Thread(r,"线程A");
Thread t2 = new Thread(r,"线程B");

t1.start();
t2.start();
}
}//运行结果
Thread[线程A,5,main] 1312517026109
Thread[线程B,5,main] 1312517026109我对线程还是不太理解,JVM此刻运行3个线程,为什么都是同一个时间?

解决方案 »

  1.   

    CPU处理程序是分一个个时间片的,并且不是连续的 ,同一个时间片内只能处理一个线程,假如原来是 1,5,9  你现在两个线程 ,第二个就可能调用了 2,8.。。CPU的利用率就提高了
      

  2.   

    currentTimeMillis以毫秒为单位,知道计算机在1毫秒里能执行多少个语句么?
    用System.naneTime就能看到时间不同了
      

  3.   

    如果t2.setPriority(Thread.MAX_PRIORITY);这句写在t1.start();之前
    为什么两个线程还是同一个时间呢,
    线程的优先级怎么用?
      

  4.   

    我还想问一个,线程的优先级怎么使用。
    为什么我设置t2的优先级t2.setPriority(Thread.MAX_PRIORITY);
    但还不行呢
      

  5.   


    优先级 不可以用,java、 里面优先级的实现还是通过操作系统实现的不可通过优先级来控制 线程执行顺序, 如果需要做同步的话 可以用 wait /notify 机制, 其它一些比如  yield join 都行线程执行顺序应该交给 操作系统控制。  总之就是 优先级没用