复习多线程

原文:http://www.mamicode.com/info-detail-517008.html
一,继承Thread 类和实现Runnable接口两种方法

package hello;


public class luxun {

    class person{
        private String name;

        public person(String name){
            this.name=name;
        }
    }

    class smoke implements Runnable{
      private person per;

      public smoke(person per){
          this.per=per;
      }
    public void run() {
        for(int i=1;i<=10;i++){

            System.out.println(per.name+"吸一口实现Runnable烟.....");
             try {
                   Thread.sleep((int) Math.random() * 10);
                } catch (InterruptedException e) {
                    e.printStackTrace();
                }

        }

    }


   }

    class smoke2 extends Thread{
      private person per;

      public smoke2(person per){
          this.per=per;
      }
    public void run() {
        for(int i=1;i<=10;i++){

            System.out.println(per.name+"吸一口继承Thread烟.....");
             try {
                   Thread.sleep((int) Math.random() * 10);
                } catch (InterruptedException e) {
                    e.printStackTrace();
                }

        }

    }


   }

   class write implements Runnable{

       private person per;

       public write(person per){
           this.per=per;
       }
        @Override
        public void run() {
            for(int i=1;i<=10;i++){

                System.out.println(per.name+"写一段实现Runnable话.......");
                try {
                       Thread.sleep((int) Math.random() * 10);
                    } catch (InterruptedException e) {
                        e.printStackTrace();
                    }
            }

        }

       }

   class write2 extends Thread{

       private person per;

       public write2(person per){
           this.per=per;
       }
        @Override
        public void run() {
            for(int i=1;i<=10;i++){

                System.out.println(per.name+"写一段继承Thread话.......");
                try {
                       Thread.sleep((int) Math.random() * 10);
                    } catch (InterruptedException e) {
                        e.printStackTrace();
                    }
            }

        }

       }
    public static void main(String[] args) {
        luxun test=new luxun();  
        personter=test.new person("鲁迅");
        new Thread(test.new smoke(per)).start();
        new Thread(test.new write(per)).start();

        test.new smoke2(per).start();
        test.new write2(per).start();

    }

}

鲁迅吸一口实现Runnable烟…..
鲁迅吸一口实现Runnable烟…..
鲁迅吸一口实现Runnable烟…..
鲁迅写一段实现Runnable话…….
鲁迅写一段实现Runnable话…….
鲁迅吸一口实现Runnable烟…..
鲁迅写一段实现Runnable话…….
鲁迅吸一口实现Runnable烟…..
鲁迅吸一口实现Runnable烟…..
鲁迅写一段实现Runnable话…….
鲁迅吸一口实现Runnable烟…..
鲁迅写一段实现Runnable话…….
鲁迅吸一口实现Runnable烟…..
鲁迅吸一口实现Runnable烟…..
鲁迅写一段实现Runnable话…….
鲁迅吸一口实现Runnable烟…..
鲁迅写一段实现Runnable话…….
鲁迅写一段实现Runnable话…….
鲁迅写一段实现Runnable话…….
鲁迅写一段实现Runnable话…….
鲁迅吸一口继承Thread烟…..
鲁迅吸一口继承Thread烟…..
鲁迅吸一口继承Thread烟…..
鲁迅吸一口继承Thread烟…..
鲁迅吸一口继承Thread烟…..
鲁迅吸一口继承Thread烟…..
鲁迅吸一口继承Thread烟…..
鲁迅吸一口继承Thread烟…..
鲁迅吸一口继承Thread烟…..
鲁迅吸一口继承Thread烟…..
鲁迅写一段继承Thread话…….
鲁迅写一段继承Thread话…….
鲁迅写一段继承Thread话…….
鲁迅写一段继承Thread话…….
鲁迅写一段继承Thread话…….
鲁迅写一段继承Thread话…….
鲁迅写一段继承Thread话…….
鲁迅写一段继承Thread话…….
鲁迅写一段继承Thread话…….
鲁迅写一段继承Thread话…….

二, Thread 和 Runnable 的区别

实现Runnable接口比继承Thread类所具有的优势:

1):适合多个相同的程序代码的线程去处理同一个资源
2):可以避免java中的单继承的限制
3):增加程序的健壮性,代码可以被多个线程共享,代码和数据独立

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值