日期:2014-05-20  浏览次数:20690 次

帮忙看下这个代码为什么不执行多线程
Java code

public class TestThread1 {

    /**
     * @param args
     */
    public static void main(String[] args) {
        // TODO Auto-generated method stub
        Runner1 r = new Runner1();
        //Thread t = new Thread();
        
        r.start();
        
        for(int i = 0; i < 100; ++i)
        {
            System.out.println("main thread:" + i);
        }    
    }

}

class Runner1 extends Thread
{
    public void run()
    {
        for(int i = 0; i < 100; ++i)
        {
            System.out.println(i);
        }
    }
}



------解决方案--------------------
不会吧 , 代码没问题啊。
你是不是运行后 他们没有交叉执行?
这个很正常 , 因为你循环的次数只有100 , 你再运行几次试试。
------解决方案--------------------
线程执行了,因为你只启用1个线程所以效果看不出来,你可以

Java code

    public void run()
    {
        for(int i = 0; i < 100; ++i)
        {
            sleep(1000);
            System.out.println(i);
        }
    }

------解决方案--------------------
不是这样写的
你对多线程理解反了
你这样想
Runnable是一个任务,比如一个类实现了一个任务,让这个类实现Runnable接口就表明这个任务有放在多线程里的可能。
Thread是一个线程,但没有任务,所以是一个空的线程。
new Thread(Runnable)就是把这个任务放进了线程里,让这个线程来执行这个任务,而不是由其它线程执行。
然后thread.start()就是把这个线程启动起来,线程就会执行任务了
这样理解就容易多了
------解决方案--------------------
你这两段代码都是按线程执行的呀,,有啥问题呐?

(其中第1段代码,打印100次太少了,看不出效果,把它改成1000就可以看出效果了~~~)
------解决方案--------------------
楼主怎么判断的程序没有多线程呢?1楼跟3楼实现没什么区别。
------解决方案--------------------
不能光看结果,是cpu执行太快了,你在每个for循环里面sleep 个1毫秒看看,就会有效果了
------解决方案--------------------
有交替打印