第一种:继承Thread类,创建线程时,每个线程会数据隔离
第二种:实现Runnable接口,创建线程时,可数据隔离,也可共享数据,因此一般推荐使用Runnable接口,而且它还符合java的设计模式6大原则的面向接口编程。
编程示例
package threads;
/**
* 第一种:继承Thread类,创建线程时,每个线程会数据隔离
* @author Administrator
*
*/
public class CreateByThread extends Thread{
private int i;
//重写run方法,run方法内的代码便是线程执行体
public void run(){
for(;i<100;i++){
System.out.println(getName()+" "+i);
}
}
public static void main(String[] args){
for(int i=0;i<100;i++){
System.out.println(Thread.currentThread().getName()+" "+i);
if(i==20){
CreateByThread st=new CreateByThread();
new CreateByThread().start();//创建线程0
new CreateByThread().start();//创建线程1
}
}
}
}
package threads;
/**
* 第二种:实现Runnable接口,创建线程时,可数据隔离,也可共享数据,
* 因此一般推荐使用Runnable接口,而且它还符合java的设计模式6大原则的面向接口编程。
* @author Administrator
*
*/
public class CreateByRunnable implements Runnable{
private int i;
public void run(){
for(;i<100;i++){
System.out.println(Thread.currentThread().getName()+" "+i);
}
}
public static void main(String[] args){
for(int i=0;i<100;i++){
System.out.println(Thread.currentThread().getName()+" "+i);
if(i==20){
CreateByRunnable st=new CreateByRunnable();
new Thread(st,"线程1").start();
new Thread(st,"线程2").start();
}
}
}
}