先看一个不使用多线程的情况
package com.test.thread;
public class Test2 {
public static void main(String[] args) {
// TODO Auto-generated method stub
for( int i = 1 ; i < 1000 ; i++ ) {
System.out.println("a"+i);
}
for( int i = 1 ; i < 1000 ; i++ ) {
System.out.println("b"+i);
}
}
}
这种情况,会输出完a以后才输出b。
使用多线程的情况
package com.test.thread;
public class Test {
/**
* @param args
*/
public static void main(String[] args) {
// TODO Auto-generated method stub
//单线程
//创建线程
Thread1 thread1=new Thread1("线程1");
//启动线程
thread1.start(); //线程对象会调用run()方法
//创建线程
Thread thread2=new Thread(new Thread2());
thread2.start();
//主线程中的循环
for(int i=1;i<=1000;i++)
System.out.println("c"+i);
}
}
package com.test.thread;
public class Thread1 extends Thread{
public Thread1()
{}
public Thread1(String name)
{
super(name);
}
//执行当前线程的任务
public void run()
{
for(int i=1;i<=1000;i++)
System.out.println("a"+i);
}
}
package com.test.thread;
//方法2 实现runnable接口
public class Thread2 implements Runnable {
//重写接口中的方法
@Override
public void run() {
// TODO Auto-generated method stub
for(int i=1;i<=1000;i++)
System.out.println("b"+i);
}
}
使用了多线程,输出a和输出b会同时运行。
创建多线程的方式有两种,一种是thread1,继承thread,一种是thread2,实现runnable接口。我们点开thread类,可以看到thread类也实现了runnable接口,所以两种方法本质是一样的。