多线程的创建

用Runnable 接口创建多线程程序,先对其以方法来实现,后用Thread来创建线程,用go类来调用并执行线程,然后在主类中实例化,并调用其中的gogo方法()来执行(go方法我只是对线程可否在子类中被Mian类调用有些疑问,证明是可以的)。

public class CreatThread { 
   public  static void main(String args[]) { //主线程
       go goo =new go();
       goo.gogo();
       for(int i=1;i<=15;i++) {
          System.out.print("主人"+i+"  ");
       }  
   }
}

public class SpeakCar implements Runnable {
   public void run() {
      for(int i=1;i<=20;i++) {
         System.out.print("轿车"+i+"  ");
      }  
   } 
}

public class SpeakElephant implements Runnable {
   public void run() {
      for(int i=1;i<=20;i++) {
         System.out.print("大象"+i+"  ");
      }  
   } 
}

public class go {
    void gogo(){
    SpeakElephant  speakElephant = new SpeakElephant() ;      //创建线程
   SpeakCar speakCar = new SpeakCar(); 
   //创建线程
   Thread Selepant = new Thread(speakElephant);
   Thread Scar = new Thread(speakCar);
   Selepant.start();                        //启动线程 
    Scar.start();                         //启动线程
    }
}

还有另一类创建方法:将线程定义在Runnable的实现类中
currentThread()作用是返回当前占用cpu使用权的线程名
sleep(int time)的作用是使线程休眠,单位是毫秒
interrupt()作用是吵醒休眠的线程

public class Example12_6 {
   public static void main(String args[]) {
      ClassRoom room6501=new ClassRoom();
      room6501.student.start();
      room6501.teacher.start();
   }
}

public class ClassRoom implements Runnable {
   Thread  student,teacher;
   ClassRoom() {
       teacher=new Thread(this); 
       student=new Thread(this); 
       teacher.setName("王教授");
       student.setName("张三");
   } 
   public void run(){     
      if(Thread.currentThread()==student) {
         try{  System.out.println(student.getName()+"正在睡觉,不听课");
               Thread.sleep(1000*60*60);
         }
         catch(InterruptedException e) {
              System.out.println(student.getName()+"被老师叫醒了");
         }
         System.out.println(student.getName()+"开始听课");
       }
      else if(Thread.currentThread()==teacher)  {
         for(int i=1;i<=3;i++) {
            System.out.println("上课!");
            try{ Thread.sleep(500);
            }
            catch(InterruptedException e){} 
         }
         student.interrupt();           //吵醒student
      }
   }
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值