继承Thread类
package l;
/*
* Thread创建新线程需要重写run函数,该方法是新线程的入口点,也必须调用start()方法
* 本质上还是实现了Runnable接口的一个实例
* Thread(Runnable threadOb,String threadName);
* threadOb 是一个实现 Runnable 接口的类的实例,并且 threadName 指定新线程的名字。
* 先开始后进入就绪状态在执行
*/
public class xiancheng_test1 extends Thread{
private String threadname;
private Thread n;
xiancheng_test1(String name){
this.threadname=name;
System.out.print("Thread "+threadname+"has been developed");
}
public void run(){
try {
System.out.print(threadname+"has been Running");
for(int i=0;i<4;i++) {
System.out.println(threadname+i);
}
Thread.sleep(50);
}catch(InterruptedException e) {
e.printStackTrace();
}
}
public void start() {
System.out.println("Starting"+threadname);
if(n==null) {
n=new Thread(this,threadname);
n.start();
}
}
public static void main(String[] args) {
xiancheng_test1 a=new xiancheng_test1("Thread1");
a.start();
xiancheng_test1 b=new xiancheng_test1("Thread2");
b.start();
}
}
实现Runnable接口
package l;
public class ceshi implements Runnable{
private String Threadname;
private Thread n;
ceshi(String name){
this.Threadname=name;
System.out.println("creating "+Threadname);
}
public void start() {
System.out.println(Threadname+"has been starting");
if(n==null) {
n=new Thread(this,Threadname);
n.start();
}
}
public void run() {
System.out.print(Threadname+" has been runnning");
try {
for(int i=0;i<4;i++) {
System.out.print(Threadname+i);
}
Thread.sleep(100);
}catch(InterruptedException e) {
System.out.println("Thread " + Threadname + " interrupted.");
}
}
public static void main(String[] args) {
ceshi a=new ceshi("Thread1");
a.start();
ceshi b=new ceshi("Thread2");
b.start();
}
}