您的位置:首页 > 职场人生

黑马程序员----多线程的两种实现方法

2015-08-19 20:24 363 查看
                                             第一部分 多线程的Thread实现方法

继承Thread类:

(1)定义类继承Thread方法

(2)复写Thread方法

(3)调用线程的start方法 该方法两个作用:启动线程,调用run方法

 

覆盖run方法的原因:

Thread 类用于描叙线程,该类定义了一个功能,用于存储要执行的代码,该功能就是run方法

也就是说thread方法中的run方法,用于线程要执行的代码

代码实现:

 

class demo extends Thread
{
     //private String name;
        demo(String name)
        {
            //this.name=name;
             super(name);

       }

      public
void run(String name)
        {
               System.out.println(name+"run");
        }
}
 

class demotest
{
        public
static
void main(String[] args)
          {
                demo d1 = new demo("one");
                demo d2 = new demo("two");
                d1.start();
//run方法与start方法的区别
                d2.start();
          }
}

 

 

 

                                  第二部分  对线程的runnable实现方法

实现过程:

(1)定义类实现runnable接口

(2)复写runnable接口中的run方法

(3)通过Thread类建立线程对象

(4)将runnable接口的子类对象作为实际参数传给Thread类的构造函数

(5)调用Thread类的start方法启动线程并调用runnable接口的子类run方法

 

class Ticket implements Runnable
{
        private
int
ticket = 100;
        public
void run()
          {
            while(true)
               {
                 if(ticket>0)
                            {
                                      System.out.println(Thread.currentThread().getName()+"...sale:"+ticket);
                            }
                 }
         }
}
 

class ticketDemo
{
       public
static
void main(String[] args)
        {
              Ticket t = new Ticket();
              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();
         }
}

 

                                              第三部分:两种实现方式比较

继承Thread类:线程代码放在Thread子类run方法中

实现runnable类:线程代码放在接口子类的run方法中

实现方式的好处:避免单继承的局限性,在定义多线程时建议多使用此方法

 
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  多线程