package com.yema.bao;public class RunnableDemo { public static void main(String[] args) {

Xian1 x1 = new Xian1();
Xian2 x2 = new Xian2();
x1.run();//这里为什么start()方法
x2.run();//这里为什么start()方法
//我这个问题就是要实现多线程,
}}class Xian1 implements Runnable { public void run() {
for (int i = 0; i < 10; i++) {
System.out.println(i);
} }}class Xian2 implements Runnable { public void run() {
for (int i = (int) 'a'; i <= (int) 'z'; i++) {
System.out.println((char) i);
} }}

解决方案 »

  1.   

    直接调用start()就可以了,你用run()的话是在当前线程执行这个代码,跟多线程没有关系D
      

  2.   

    LZ这个方法不是实现多线程的。应该main函数中这样写:
    public static void main(String[] args) {
    Thread t1 = new Thread(new Xian1());
    t1.start();
    Thread t2 = new Thread(new Xian2());
    t2.start();
    }
      

  3.   

    楼上都说的很好了,搂住你的代码不是多线程的,run部分是不经处理直接由主线程调用的,只有用Thread封装了Runnable对象之后,通过start启动新线程再去调用run.
      

  4.   

    这是JAVA对多线程实现包的设计模式决定的。我们创建线程时必须要start()方法,此方法是为线程创建运行环境与资源。如果之间调用run()方法,当然也可以运行,但是run()方法还是运行在主线程里,而没有创建新的线程。
      

  5.   

    而且还有以点
    Runnable必须构造成Thread,并且调用start才算启动一个线程
    直接调用Runnable的run方法,和其它的方法调用没什么区别