线程的两种创建方式

转载 2015年11月19日 14:38:59
继承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();       
          
  
    }  
  
}  




Java中线程的创建有两种方式

Java中线程的创建有两种方式:   1.  通过继承Thread类,重写Thread的run()方法,将线程运行的逻辑放在其中 2.  通过实现Runnable接口,实例化Thread类  ...
  • qq_20302155
  • qq_20302155
  • 2016年06月02日 11:15
  • 853

创建线程的两种方式区别

Java提供了线程类Thread来创建多线程的程序。其实,创建线程与创建普通的类的对象的操作是一样的,而线程就是Thread类或其子类的实例对象。每个Thread对象描述了一个单独的线程。要产生一个线...
  • Krito_blog
  • Krito_blog
  • 2017年02月01日 12:49
  • 1639

多线程的创建两种方式和区别

/* 创建线程的一种方式是:继承Thread类,并复写类中run方法 最后调用线程的start方法, 该方法启动线程并调用run方法(即和模板方法类似) getName();获取线程的名称 stat...
  • ZJQLOVELYY
  • ZJQLOVELYY
  • 2012年12月31日 14:58
  • 3537

创建线程的两种方法

创建线程的方法有两种方法 1.利用Thread类的子类来创建线程 2.利用Runnable接口来创建线程 Thread类的构造方法有: public Thread();   /...
  • dingjunneng
  • dingjunneng
  • 2016年05月30日 16:07
  • 3007

创建线程的两种方式及原理

创建线程的第一种方式: 1.  定义类继承Thread类。 2.  重写run()。 3.  创建线程对象。 4.  调用start()启动线程。 class Thread {     ...
  • fandoudou123
  • fandoudou123
  • 2015年08月20日 11:51
  • 567

多线程实现的两种方式及其区别

继承Threadpublic class Demo2_Thread { public static void main(String[] args) { MyThread mt ...
  • StriverLi
  • StriverLi
  • 2017年02月26日 21:07
  • 1723

线程有两种实现方法的具体区别

Java中有两种实现多线程的方式。一是直接继承Thread类,二是实现Runnable接口。那么这两种实现多线程的方式在应用上有什么区别呢?  第一种方式:使用Runnable接口创建线程 第...
  • chajinglong
  • chajinglong
  • 2015年08月24日 13:44
  • 7535

Thread 两种实现方式的区别

一、类继承方式实现线程package thread.ticket; class Ticket1 extends Thread{ public Ticket1(String name) ...
  • limuzi13
  • limuzi13
  • 2015年09月27日 23:15
  • 992

有两种实现多线程的方式以及两种方式之间的区别

Java中有两种实现多线程的方式。一是直接继承Thread类,二是实现Runnable接口。那么这两种实现多线程的方式在应用上有什么区别呢?          为了回答这个问题,我们可以通过编写...
  • u013449800
  • u013449800
  • 2014年08月22日 18:40
  • 3965

java创建两个线程的方法和它们的区别

Java提供了线程类Thread来创建多线程的程序。其实,创建线程与创建普通的类的对象的操作是一样的,而线程就是Thread类或其子类的实例对象。每个Thread对象描述了一个单独的线程。要产生一个线...
  • abc19900828
  • abc19900828
  • 2012年07月31日 15:01
  • 2469
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:线程的两种创建方式
举报原因:
原因补充:

(最多只允许输入30个字)