您的位置:首页 > 其它

线程的两种创建方式

2015-11-19 14:38 471 查看
继承Thread类:
/**
* 方法一:
*  继承Thread类创建线程
* @author LiMin
*
*/
public class CreateThread extends Thread {
private String name;
public CreateThread(){

}
public CreateThread(String name){
/*this.name=name;*/
//调用父类的给线程命名的方法
super(name);

}
public void run(){
for(int x =0;x<60;x++){
/*System.out.println(this.name+ " run -----"+ x);*/
/*System.out.println(this.getName()+ " run -----"+ x);*/
//使用Thread的静态方法获取线程名称Thread.currentThread().getName()是标准通用方式
/*System.out.println(Thread.currentThread().getName()+ " run -----"+ x);*/
System.out.println((Thread.currentThread()==this)+"....."+this.getName()+ " run -----"+ x);
}

}
}
调用:
public class ThreadTest {

/**
* @param args
*/
public static void main(String[] args) {

CreateThread t1 = new CreateThread("one----");
CreateThread t2= new CreateThread("two+++++");

t1.start();
t2.start();

for(int x =0;x<60;x++){
System.out.println("main-----"+ x);
}
}

}
实现Runnable接口:
public class Ticket2 implements Runnable{ //extends Thread{//如果是静态的话,所有的线程会共享这100张票/*private  static int  ticket =100;*///如果不是静态的话,每一个线程对象都会创建这个ticket对象,也即每个线程拥有100张票卖。//这时候,如果还是采用继承Thread类的方法就不行了,需要使用实现Runnable接口创建线程private  int  ticket =1000;Object obj= new Object();public void run() {//在这里声明的对象是无效的/*Object obj= new Object(); */while(true){synchronized (obj) {if(ticket>0){try {Thread.sleep(10);} catch (InterruptedException e) {e.printStackTrace();}System.out.println(Thread.currentThread().getName()+".....sale : "+ ticket--);}}}}}  
调用:
public class TicketDemo2 {/*** @param args*/public static void main(String[] args) {Ticket2 t = new Ticket2();Thread t1 = new Thread(t);Thread t2 = new Thread(t);Thread t3 = new Thread(t);Thread t4 = new Thread(t);t1.start();t2.start();t3.start();t4.start();}}  
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: