java中多线程的实现方式以及区别(1)

1.多线程是实现并发机制的一种有效手段,进程是程序动态执行的一个完整过程(发展,运行,消亡)。有两种实现方式:

通过继承Thread类:

package day3;

publicclass Ticketextends Thread

{

 privateintticket=100;

publicvoid run()


{ while(true)

{

   if(ticket>0)

   {

   System.out.println(Thread.currentThread().getName()+"###"+ticket--);

   }

}

}

publicstaticvoid main(String[] args)

{

   Ticket t1=new Ticket();

   Ticket t2=new Ticket();

   Ticket t3=new Ticket();

   Ticket t4=new Ticket();

   思想:四个线程工操作400张,每个线程操作100张,没有实现资源共享;

   t1.start();

   t2.start();

   t3.start();

   t4.start();                            

}

执行报错,开启一个线程,不能重复开启;

   t1.start();

   t1.start();

   t1.start();

   t1.start();

publicclass Ticketimplements Runnable{

   privateintticket=10;

   private Stringname;

   public Ticket(String name){

      this.name=name;

   }

   publicvoid run(){

      while(true){

         if(ticket>0){

             System.out.println(Thread.currentThread().getName()+"###"+ticket--);

          }

          else{

             break;

          }

      }

   }

}

package com.ljf.temp;

publicclass TestTicket {

publicstaticvoid main(String[] args) {

// Ticket t=new Ticket("t1");

   show2();

}

publicstatic voidshow(){

   new Thread(new Ticket("t1")).start();

   new Thread(new Ticket("t1")).start();

   new Thread(new Ticket("t1")).start();

   new Thread(new Ticket("t1")).start();

}

publicstaticvoid show2(){

   Ticket t=new Ticket("t1");

   new Thread(t).start();

   new Thread(t).start();

   new Thread(t).start();

   new Thread(t).start();

}

}


可以看到同样是四个线程,总共卖出了10张,也就是说四个线程访问的是同一个资源(10张票),实现了资源共享。

继承Thead和实现runnable两种实现多线程的方式的区别:

  1. 使用runnable接口可以实现资源共享。

  2. 避免单继承的局限性。比如一个类实现了Thead类,此类就不能继承其他的类,具有局限性。



  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值