首页 > 技术文章 > 多线程实现的方式一继承Thread

lingduqianli 2017-08-16 17:12 原文

 实现方法一:继承Thread类     

package thread;
/**
 * @function 多线程继承Thread类
 * @author hj
 */
public  class Threads extends Thread{
    private String name;  
    public Threads(String name) {  
        this.name=name;  
    }  
    public void run() {  
        for (int i = 0; i < 5; i++) {  
            System.out.println(name + "运行  :  " + i);  
            try {  
                sleep( 1000);  
            } catch (InterruptedException e) {  
                e.printStackTrace();  
            }  
        } 
    }  
        public static void main(String[] args) {  
            Threads mTh1=new Threads("A");  
            Threads mTh2=new Threads("B");  
            mTh1.start();  
            mTh2.start();  
        }  
      
    }  
 

运行结果如下:

B运行 : 0
A运行 : 0
A运行 : 1
B运行 : 1
B运行 : 2
A运行 : 2
B运行 : 3
A运行 : 3
B运行 : 4
A运行 : 4

说明:通过上图可看出Thread类本质上是实现了rannable接口的实体类,代表一个线程的实例。启动线程的唯一的方法就是通过Thread类的start()方法。通过自己的类直接extend Thread,并复写run()方法,就可以启动新线程并执行自己定义的run()方法。

   通过结果可以看出,多行程程序是乱序执行的,因此只有乱序的情况下才有必要设计多线程。

    而sleep()方法是不让当前的线程占用该进程所有的CPU资源,留出时间给其他线程执行

如果start方法被重复调用的话,会出现以下错误(线程异常)

 public static void main(String[] args) {  
	        Threads mTh1=new Threads("A");  
	        Threads mTh2=mTh1;
	        mTh1.start();  
	        mTh2.start();  
	    }  

  

 


推荐阅读