黑马程序员——13,多线程(3)

------<ahref="http://www.itheima.com" target="blank">Java培训、Android培训、iOS培训、.Net培训</a>、期待与您交流! -------

          

              黑马程序员——13,多线程(3)

/*
线程的停止:
其中的stop方法过时不能用
所以就需要控制循环达到停止线程的目的
*/
 
class Xctx8
{
         publicstatic void main(String[] args)
         {
                   Shipin  a=new Shipin();
         int sp=0;
                   Shengchangzhe  b=new Shengchangzhe(a);
        
 
                   Thread  t1=new Thread(b);
                Thread  t2=new Thread(b);
 
       t1.start();
       t2.start();
       while(true)
                   {
                            if(sp==30)
                            {
                a.fgai();//控制循环
                                break;
                            }
                       sp++;
        System.out.println("main--"+Thread.currentThread().getName()+"----"+sp);
                   }
                  
 
                   System.out.println("HelloWorld!");
         }
}
class Shipin //食品类
{
         privateint sp=0;
         privateint  f=1;//标示f,由于个人习惯,这里用的是int类型的
         public  void  fgai()
         {
              f++;
         }
         public    void shengchang(  )
         {
        
        
                    while(f==1)
                   {
        sp++;
              System.out.println("生产者"+Thread.currentThread().getName()+"----"+sp);
                   }
                  
                  
         }
 
}
class Shengchangzhe /*生产者类*/implements  Runnable
{
         privateShipin   a ;
        
         Shengchangzhe(Shipin   a)
         {
             this.a=a;
         }
   public void run()
         {
                  
                  
              a.shengchang();  
                  
         }
}
/*
以上代码编译运行结果如下:
main--main----1
main--main----2
main--main----3
main--main----4
生产者Thread-1----2
生产者Thread-1----3
生产者Thread-1----4
生产者Thread-1----5
生产者Thread-1----6
生产者Thread-1----7
生产者Thread-1----8
生产者Thread-1----9
生产者Thread-1----10
生产者Thread-1----11
生产者Thread-1----12
生产者Thread-1----13
生产者Thread-1----14
生产者Thread-1----15
生产者Thread-0----2
生产者Thread-1----16
main--main----5
生产者Thread-1----18
生产者Thread-0----17
生产者Thread-1----19
main--main----6
main--main----7
main--main----8
main--main----9
生产者Thread-1----21
生产者Thread-0----20
生产者Thread-1----22
main--main----10
生产者Thread-1----24
生产者Thread-0----23
生产者Thread-1----25
main--main----11
生产者Thread-1----27
生产者Thread-0----26
生产者Thread-1----28
main--main----12
main--main----13
main--main----14
生产者Thread-1----30
生产者Thread-0----29
生产者Thread-0----32
生产者Thread-0----33
生产者Thread-0----34
生产者Thread-1----31
main--main----15
main--main----16
main--main----17
main--main----18
main--main----19
main--main----20
main--main----21
main--main----22
生产者Thread-1----36
生产者Thread-0----35
生产者Thread-0----38
生产者Thread-1----37
main--main----23
main--main----24
生产者Thread-1----40
生产者Thread-0----39
生产者Thread-0----42
生产者Thread-0----43
生产者Thread-0----44
生产者Thread-0----45
生产者Thread-0----46
生产者Thread-1----41
main--main----25
生产者Thread-1----48
生产者Thread-0----47
生产者Thread-0----50
生产者Thread-1----49
main--main----26
生产者Thread-1----52
生产者Thread-0----51
生产者Thread-1----53
main--main----27
生产者Thread-1----55
生产者Thread-0----54
生产者Thread-1----56
main--main----28
生产者Thread-1----58
生产者Thread-0----57
生产者Thread-1----59
main--main----29
main--main----30
Hello World!
生产者Thread-1----61
生产者Thread-0----60
 
*/

————————分割线————

/*
当程序里面有同步时程序可能停不下来
以下也提供了解决的办法
*/
class Xctx9
{
         publicstatic void main(String[] args)
         {
                   Shipin  a=new Shipin();
         int sp=0;
                   Shengchangzhe  b=new Shengchangzhe(a);
        
 
                   Thread  t1=new Thread(b);
                Thread  t2=new Thread(b);
 
       t1.start();
       t2.start();
        while(true)
                   {
                            if(sp==30)
                            {
                //a.fgai();//控制循环
                                     t1.interrupt();//强制唤醒沉睡中的t1线程
                                     t2.interrupt();//强制唤醒沉睡中的t2线程
                                break;
                            }
                       sp++;
        System.out.println("main--"+Thread.currentThread().getName()+"----"+sp);
                  }
                  
 
                   System.out.println("HelloWorld!");
         }
}
class Shipin //食品类
{
         privateint sp=0;
         privateint  f=1;//标示f,由于个人习惯,这里用的是int类型的
         public  void fgai()
         {
              f++;
         }
         public  synchronized void shengchang(  )//存在同步了
         {
                    while(f==1)//当f为1的时候才执行
                   { 
                             try{this.wait();}
                             catch(Exception e)
                             {
                                System.out.println("有异常");
                                     f++;
                             }
                            /*
                             这种写法的话就会导致不管是哪一个线程得到锁都会被冻结
                             哪怕是主线程执行完了,这些副线程也还会被冻结,挂在这里不动
                             为了解决这个问题,主线程调用interrupt()方法,该方法会强制唤醒线程往下执行
                             第二步在catch块里面加上f++;强制被唤醒的线程执行到这里就把标示位停掉
                             run方法就不能被调用了,线程停止了。
                             */
                             
        sp++;
              System.out.println("生产者"+Thread.currentThread().getName()+"----"+sp);
                   }
                  
                  
         }
 
}
class Shengchangzhe /*生产者类*/implements  Runnable
{
         privateShipin   a ;
        
         Shengchangzhe(Shipin   a)
         {
             this.a=a;
         }
   public void run()
         {                
              a.shengchang();  
                  
         }
}
/*
以上代码编译运行结果:
main--main----1
main--main----2
main--main----3
main--main----4
main--main----5
main--main----6
main--main----7
main--main----8
main--main----9
main--main----10
main--main----11
main--main----12
main--main----13
main--main----14
main--main----15
main--main----16
main--main----17
main--main----18
main--main----19
main--main----20
main--main----21
main--main----22
main--main----23
main--main----24
main--main----25
main--main----26
main--main----27
main--main----28
main--main----29
main--main----30
Hello World!
有异常
生产者Thread-0----1
有异常
生产者Thread-1----2
 
*/

——————分割线————————

/*
以下讲解的是守护线程
 
*/
 
class Xctx10
{
         publicstatic void main(String[] args) //主函数
         {
                   Shipin  a=new Shipin();
         int sp=0;
                   Shengchangzhe  b=new Shengchangzhe(a);
        
 
                   Thread  t1=new Thread(b);
                Thread  t2=new Thread(b);
 
                   t1.setDaemon(true);//把t1线程标记为守护线程
       t2.setDaemon(true);//把t2线程标记为守护线程
                   //守护线程也称作后台线程
                   //与后台线程对应的是前台线程
                   //守护线程必须要在线程开启之前标记好哪条线程是守护线程
 
       t1.start();//开启t1线程
       t2.start();//开启t2线程
       while(true)
                   {
                            if(sp==30)
                            {
                //a.fgai();//控制循环
                                     //t1.interrupt();//强制唤醒沉睡中的t1线程
                                     //t2.interrupt();//强制唤醒沉睡中的t2线程
                                     /*
                                       这次的实验把interrupt方法都注释掉,
                                       原本没有了这些interrupt方法,t1线程和t2线程会冻结,
                                       但是又由于前面把t1线程和t2线程标记为守护线程,
                                       所以,到了“只剩下一个或者多个守护线程还没有停止的时候”虚拟机就会强制停止这些后台线程
                                     */
                                break;
                            }
                       sp++;
        System.out.println("main--"+Thread.currentThread().getName()+"----"+sp);
                   }
                  
 
                   System.out.println("HelloWorld!");
                  
         }
}
class Shipin //食品类
{
         privateint sp=0;
         privateint  f=1;//标示f,由于个人习惯,这里用的是int类型的
         public  void fgai()
         {
              f++;
         }
         public  synchronized void shengchang(  )//存在同步了
         {
                    while(f==1)//当f为1的时候才执行
                   { 
                             try{this.wait();}//t1线程和t2线程执行到这里会冻结
                             catch(Exception e)
                             {
                                System.out.println("有异常");
                                     f++;
                             }
                             
        sp++;
              System.out.println("生产者"+Thread.currentThread().getName()+"----"+sp);
                   }
                  
                  
         }
 
}
class Shengchangzhe /*生产者类*/implements  Runnable
{
         privateShipin   a ;
        
         Shengchangzhe(Shipin   a)
         {
             this.a=a;
         }
   public void run()
         {                
              a.shengchang();  
                  
         }
}
 

————————分割线——————

 

 
/*
    以下讲解的是线程中join方法的用法
*/
 
 
class   Xctx11
{
         public  static void  main(String[] args) /*主函数*/  throws  Exception
                   //把异常抛给虚拟机了
         {
        
       Shengchangzhe   a=new  Shengchangzhe();
                   Thread   t1=new Thread(a);
                   Thread   t2=new Thread(a);
 
              t1.start();
       
/* 本人把此行记为1号行*/ // t1.join();
        //join方法会抛出一个异常
                   /*
                   (个人定义:1号行位置在t2线程开启前面,2号行位置在t2线程开启后面)
                   如果在1号行位置添加“t1.join();”这句话的话,
                   join方法使得t1抢夺了CPU的执行权,此时CPU执行权在主线程手中,
                   所以,主线程会把执行权给t1线程,主线程就冻结了,
                   等到t1线程执行完了(注意:这里是“执行完了”),主线程才可以拿到执行权
        */
                   t2.start();
/* 本人把此行记为2号行*/t1.join();
        /*
             如果在2号行位置添加“t1.join();”这句话的话,
                   主线程执行到这里遇到“t1.join();”这句话时候就会释放执行权,
                   然后主线程冻结,t1线程和t2线程在争夺执行权,
                   只要t1线程执行完了,主线程就会苏醒争夺执行权。
                    */
      
        for(  int  x=1;x<15 ;x++  )
                   {
               System.out.println("主线程------"+x);
                   }
 
         }
}
class Shengchangzhe/*生产者类*/implements  Runnable
{
    public  void  run()
         {
                  
                       for( int  x=1;x<25 ;x++  )
                       {
                    System.out.println(Thread.currentThread().getName()+" 生产者生产了食品 ---"+x);
                        }
                  
         }
}
/*
以上代码编译运行后的结果如下:
Thread-0 生产者生产了食品 ---1
Thread-0 生产者生产了食品 ---2
Thread-0 生产者生产了食品 ---3
Thread-0 生产者生产了食品 ---4
Thread-0 生产者生产了食品 ---5
Thread-0 生产者生产了食品 ---6
Thread-0 生产者生产了食品 ---7
Thread-0 生产者生产了食品 ---8
Thread-0 生产者生产了食品 ---9
Thread-0 生产者生产了食品 ---10
Thread-0 生产者生产了食品 ---11
Thread-0 生产者生产了食品 ---12
Thread-0 生产者生产了食品 ---13
Thread-0 生产者生产了食品 ---14
Thread-0 生产者生产了食品 ---15
Thread-0 生产者生产了食品 ---16
Thread-0 生产者生产了食品 ---17
Thread-0 生产者生产了食品 ---18
Thread-0 生产者生产了食品 ---19
Thread-0 生产者生产了食品 ---20
Thread-0 生产者生产了食品 ---21
Thread-0 生产者生产了食品 ---22
Thread-0 生产者生产了食品 ---23
Thread-0 生产者生产了食品 ---24
Thread-1 生产者生产了食品 ---1
Thread-1 生产者生产了食品 ---2
主线程------1
主线程------2
主线程------3
Thread-1 生产者生产了食品 ---3
Thread-1 生产者生产了食品 ---4
Thread-1 生产者生产了食品 ---5
Thread-1 生产者生产了食品 ---6
Thread-1 生产者生产了食品 ---7
Thread-1 生产者生产了食品 ---8
Thread-1 生产者生产了食品 ---9
Thread-1 生产者生产了食品 ---10
Thread-1 生产者生产了食品 ---11
Thread-1 生产者生产了食品 ---12
Thread-1 生产者生产了食品 ---13
Thread-1 生产者生产了食品 ---14
Thread-1 生产者生产了食品 ---15
Thread-1 生产者生产了食品 ---16
主线程------4
主线程------5
主线程------6
Thread-1 生产者生产了食品 ---17
主线程------7
主线程------8
Thread-1 生产者生产了食品 ---18
主线程------9
Thread-1 生产者生产了食品 ---19
主线程------10
Thread-1 生产者生产了食品 ---20
主线程------11
Thread-1 生产者生产了食品 ---21
主线程------12
Thread-1 生产者生产了食品 ---22
主线程------13
Thread-1 生产者生产了食品 ---23
主线程------14
Thread-1 生产者生产了食品 ---24
 
*/

————————分割线——————

 

/*
以下讲解的是多线程中的优先级
 
*/
class   Xctx12
{
         public  static void  main(String[] args) /*主函数*/  throws  Exception
                   //把异常抛给虚拟机了
         {
        
       Shengchangzhe   a=new  Shengchangzhe();
                   Thread   t1=new Thread(a);
                   Thread   t2=new Thread(a);
 
       t1.start();
      
            t1.setPriority(Thread.MAX_PRIORITY);
            //setPriority方法是Thraed类中的设置优先级的方法
        
            /*
            MAX_PRIORITY设定为最高优先级10
            MIN_PRIORITY设定为最低优先级1
            NORM_PRIORITY设定为默认优先级5
            三者都是设定为在Thead类中的静态成员,
            优先级高只能够表示得到执行权的频率比较高,
            但是绝对不是一直都可以得到执行权。
            */
 
                   t2.start();
      
        for(  int  x=1;x<15 ;x++  )
                   {
               System.out.println("主线程------"+x);
                   }
 
         }
}
class Shengchangzhe/*生产者类*/implements  Runnable
{
    public  void  run()
         {
                  
                       for( int  x=1;x<25 ;x++  )
                       {
                    System.out.println(Thread.currentThread().toString()+" 生产者生产了食品 ---"+x);
                                     /*
                                     Thread.currentThread().toString()的作用是打印线程名字,线程优先级别,线程组
                                     例如:Thread[Thread-0,5,main]  
                                     该线程名字Thread-0  该线程优先级5   该线程的线程组是main
                                     优先级一般设定为1到10级,5是默认优先级别,
                                     而线程组则是开启该线程的线程,
                                     例如,在该实验中主线程main开启了t1线程和t2线程,
                                     那么t1线程和t2线程的线程组就是主线程main组了
 
                                     */
                        }
                  
         }
}
/*
以上代码编译运行结果:
Thread[Thread-0,10,main] 生产者生产了食品 ---1
Thread[Thread-1,5,main] 生产者生产了食品 ---1
主线程------1
Thread[Thread-1,5,main] 生产者生产了食品 ---2
Thread[Thread-0,10,main] 生产者生产了食品 ---2
Thread[Thread-1,5,main] 生产者生产了食品 ---3
主线程------2
主线程------3
主线程------4
主线程------5
主线程------6
主线程------7
主线程------8
主线程------9
主线程------10
主线程------11
主线程------12
主线程------13
主线程------14
Thread[Thread-1,5,main] 生产者生产了食品 ---4
Thread[Thread-0,10,main] 生产者生产了食品 ---3
Thread[Thread-0,10,main] 生产者生产了食品 ---4
Thread[Thread-1,5,main] 生产者生产了食品 ---5
Thread[Thread-0,10,main] 生产者生产了食品 ---5
Thread[Thread-1,5,main] 生产者生产了食品 ---6
Thread[Thread-0,10,main] 生产者生产了食品 ---6
Thread[Thread-1,5,main] 生产者生产了食品 ---7
Thread[Thread-0,10,main] 生产者生产了食品 ---7
Thread[Thread-1,5,main] 生产者生产了食品 ---8
Thread[Thread-0,10,main] 生产者生产了食品 ---8
Thread[Thread-1,5,main] 生产者生产了食品 ---9
Thread[Thread-0,10,main] 生产者生产了食品 ---9
Thread[Thread-1,5,main] 生产者生产了食品 ---10
Thread[Thread-0,10,main] 生产者生产了食品 ---10
Thread[Thread-1,5,main] 生产者生产了食品 ---11
Thread[Thread-0,10,main] 生产者生产了食品 ---11
Thread[Thread-0,10,main] 生产者生产了食品 ---12
Thread[Thread-1,5,main] 生产者生产了食品 ---12
Thread[Thread-0,10,main] 生产者生产了食品 ---13
Thread[Thread-1,5,main] 生产者生产了食品 ---13
Thread[Thread-0,10,main] 生产者生产了食品 ---14
Thread[Thread-1,5,main] 生产者生产了食品 ---14
Thread[Thread-0,10,main] 生产者生产了食品 ---15
Thread[Thread-1,5,main] 生产者生产了食品 ---15
Thread[Thread-0,10,main] 生产者生产了食品 ---16
Thread[Thread-0,10,main] 生产者生产了食品 ---17
Thread[Thread-0,10,main] 生产者生产了食品 ---18
Thread[Thread-0,10,main] 生产者生产了食品 ---19
Thread[Thread-0,10,main] 生产者生产了食品 ---20
Thread[Thread-0,10,main] 生产者生产了食品 ---21
Thread[Thread-0,10,main] 生产者生产了食品 ---22
Thread[Thread-0,10,main] 生产者生产了食品 ---23
Thread[Thread-0,10,main] 生产者生产了食品 ---24
Thread[Thread-1,5,main] 生产者生产了食品 ---16
Thread[Thread-1,5,main] 生产者生产了食品 ---17
Thread[Thread-1,5,main] 生产者生产了食品 ---18
Thread[Thread-1,5,main] 生产者生产了食品 ---19
Thread[Thread-1,5,main] 生产者生产了食品 ---20
Thread[Thread-1,5,main] 生产者生产了食品 ---21
Thread[Thread-1,5,main] 生产者生产了食品 ---22
Thread[Thread-1,5,main] 生产者生产了食品 ---23
Thread[Thread-1,5,main] 生产者生产了食品 ---24
 
*/

————分割线——————

 

/*
以下讲解的是多线程中的如何使用yield方法
 
*/
 
class   Xctx13
{
         public  static void  main(String[] args) /*主函数*/  throws  Exception
                   //把异常抛给虚拟机了
         {
        
       Shengchangzhe   a=new  Shengchangzhe();
                   Thread   t1=new Thread(a);
                   Thread   t2=new Thread(a);
 
       t1.start();
 
                   t2.start();
      
 
         }
}
class Shengchangzhe/*生产者类*/implements  Runnable
{
    public  void  run()
         {
                  
                       for( int  x=1;x<125 ;x++  )
                       {
                    System.out.println(Thread.currentThread().toString()+" 生产者生产了食品 ---"+x);
                                     Thread.yield();
                                     //yield是Thread类中的静态方法
                                     /*
                                     该方法可以暂时的释放执行权,注意:这个不是冻结!!!
                                     作用是减缓线程的运行,从而尽可能的达到线程都有运行的效果
                 */
                        }
                  
         }
}
/*
以上代码编译运行结果是:
Thread[Thread-0,5,main] 生产者生产了食品 ---1
Thread[Thread-1,5,main] 生产者生产了食品 ---1
Thread[Thread-0,5,main] 生产者生产了食品 ---2
Thread[Thread-1,5,main] 生产者生产了食品 ---2
Thread[Thread-0,5,main] 生产者生产了食品 ---3
Thread[Thread-1,5,main] 生产者生产了食品 ---3
Thread[Thread-0,5,main] 生产者生产了食品 ---4
Thread[Thread-1,5,main] 生产者生产了食品 ---4
Thread[Thread-0,5,main] 生产者生产了食品 ---5
Thread[Thread-1,5,main] 生产者生产了食品 ---5
Thread[Thread-0,5,main] 生产者生产了食品 ---6
Thread[Thread-1,5,main] 生产者生产了食品 ---6
Thread[Thread-0,5,main] 生产者生产了食品 ---7
Thread[Thread-1,5,main] 生产者生产了食品 ---7
Thread[Thread-0,5,main] 生产者生产了食品 ---8
Thread[Thread-1,5,main] 生产者生产了食品 ---8
Thread[Thread-0,5,main] 生产者生产了食品 ---9
Thread[Thread-1,5,main] 生产者生产了食品 ---9
Thread[Thread-0,5,main] 生产者生产了食品 ---10
Thread[Thread-1,5,main] 生产者生产了食品 ---10
Thread[Thread-0,5,main] 生产者生产了食品 ---11
Thread[Thread-1,5,main] 生产者生产了食品 ---11
Thread[Thread-0,5,main] 生产者生产了食品 ---12
Thread[Thread-1,5,main] 生产者生产了食品 ---12
Thread[Thread-0,5,main] 生产者生产了食品 ---13
Thread[Thread-1,5,main] 生产者生产了食品 ---13
Thread[Thread-0,5,main] 生产者生产了食品 ---14
Thread[Thread-1,5,main] 生产者生产了食品 ---14
Thread[Thread-0,5,main] 生产者生产了食品 ---15
Thread[Thread-1,5,main] 生产者生产了食品 ---15
Thread[Thread-0,5,main] 生产者生产了食品 ---16
Thread[Thread-1,5,main] 生产者生产了食品 ---16
Thread[Thread-0,5,main] 生产者生产了食品 ---17
Thread[Thread-1,5,main] 生产者生产了食品 ---17
Thread[Thread-0,5,main] 生产者生产了食品 ---18
Thread[Thread-1,5,main] 生产者生产了食品 ---18
Thread[Thread-0,5,main] 生产者生产了食品 ---19
Thread[Thread-1,5,main] 生产者生产了食品 ---19
Thread[Thread-0,5,main] 生产者生产了食品 ---20
Thread[Thread-1,5,main] 生产者生产了食品 ---20
Thread[Thread-0,5,main] 生产者生产了食品 ---21
Thread[Thread-1,5,main] 生产者生产了食品 ---21
Thread[Thread-0,5,main] 生产者生产了食品 ---22
Thread[Thread-1,5,main] 生产者生产了食品 ---22
Thread[Thread-0,5,main] 生产者生产了食品 ---23
Thread[Thread-1,5,main] 生产者生产了食品 ---23
Thread[Thread-0,5,main] 生产者生产了食品 ---24
Thread[Thread-1,5,main] 生产者生产了食品 ---24
Thread[Thread-0,5,main] 生产者生产了食品 ---25
Thread[Thread-1,5,main] 生产者生产了食品 ---25
Thread[Thread-0,5,main] 生产者生产了食品 ---26
Thread[Thread-1,5,main] 生产者生产了食品 ---26
Thread[Thread-0,5,main] 生产者生产了食品 ---27
Thread[Thread-1,5,main] 生产者生产了食品 ---27
Thread[Thread-0,5,main] 生产者生产了食品 ---28
Thread[Thread-1,5,main] 生产者生产了食品 ---28
Thread[Thread-0,5,main] 生产者生产了食品 ---29
Thread[Thread-1,5,main] 生产者生产了食品 ---29
Thread[Thread-0,5,main] 生产者生产了食品 ---30
Thread[Thread-1,5,main] 生产者生产了食品 ---30
Thread[Thread-0,5,main] 生产者生产了食品 ---31
Thread[Thread-1,5,main] 生产者生产了食品 ---31
Thread[Thread-0,5,main] 生产者生产了食品 ---32
Thread[Thread-1,5,main] 生产者生产了食品 ---32
Thread[Thread-0,5,main] 生产者生产了食品 ---33
Thread[Thread-1,5,main] 生产者生产了食品 ---33
Thread[Thread-0,5,main] 生产者生产了食品 ---34
Thread[Thread-1,5,main] 生产者生产了食品 ---34
Thread[Thread-0,5,main] 生产者生产了食品 ---35
Thread[Thread-1,5,main] 生产者生产了食品 ---35
Thread[Thread-0,5,main] 生产者生产了食品 ---36
Thread[Thread-1,5,main] 生产者生产了食品 ---36
Thread[Thread-0,5,main] 生产者生产了食品 ---37
Thread[Thread-1,5,main] 生产者生产了食品 ---37
Thread[Thread-0,5,main] 生产者生产了食品 ---38
Thread[Thread-1,5,main] 生产者生产了食品 ---38
Thread[Thread-0,5,main] 生产者生产了食品 ---39
Thread[Thread-1,5,main] 生产者生产了食品 ---39
Thread[Thread-0,5,main] 生产者生产了食品 ---40
Thread[Thread-1,5,main] 生产者生产了食品 ---40
Thread[Thread-0,5,main] 生产者生产了食品 ---41
Thread[Thread-1,5,main] 生产者生产了食品 ---41
Thread[Thread-0,5,main] 生产者生产了食品 ---42
Thread[Thread-1,5,main] 生产者生产了食品 ---42
Thread[Thread-0,5,main] 生产者生产了食品 ---43
Thread[Thread-1,5,main] 生产者生产了食品 ---43
Thread[Thread-0,5,main] 生产者生产了食品 ---44
Thread[Thread-1,5,main] 生产者生产了食品 ---44
Thread[Thread-0,5,main] 生产者生产了食品 ---45
Thread[Thread-1,5,main] 生产者生产了食品 ---45
Thread[Thread-0,5,main] 生产者生产了食品 ---46
Thread[Thread-1,5,main] 生产者生产了食品 ---46
Thread[Thread-0,5,main] 生产者生产了食品 ---47
Thread[Thread-1,5,main] 生产者生产了食品 ---47
Thread[Thread-0,5,main] 生产者生产了食品 ---48
Thread[Thread-1,5,main] 生产者生产了食品 ---48
Thread[Thread-0,5,main] 生产者生产了食品 ---49
Thread[Thread-1,5,main] 生产者生产了食品 ---49
Thread[Thread-0,5,main] 生产者生产了食品 ---50
Thread[Thread-1,5,main] 生产者生产了食品 ---50
Thread[Thread-0,5,main] 生产者生产了食品 ---51
Thread[Thread-1,5,main] 生产者生产了食品 ---51
Thread[Thread-0,5,main] 生产者生产了食品 ---52
Thread[Thread-1,5,main] 生产者生产了食品 ---52
Thread[Thread-0,5,main] 生产者生产了食品 ---53
Thread[Thread-1,5,main] 生产者生产了食品 ---53
Thread[Thread-0,5,main] 生产者生产了食品 ---54
Thread[Thread-1,5,main] 生产者生产了食品 ---54
Thread[Thread-0,5,main] 生产者生产了食品 ---55
Thread[Thread-1,5,main] 生产者生产了食品 ---55
Thread[Thread-0,5,main] 生产者生产了食品 ---56
Thread[Thread-1,5,main] 生产者生产了食品 ---56
Thread[Thread-0,5,main] 生产者生产了食品 ---57
Thread[Thread-1,5,main] 生产者生产了食品 ---57
Thread[Thread-0,5,main] 生产者生产了食品 ---58
Thread[Thread-1,5,main] 生产者生产了食品 ---58
Thread[Thread-0,5,main] 生产者生产了食品 ---59
Thread[Thread-1,5,main] 生产者生产了食品 ---59
Thread[Thread-0,5,main] 生产者生产了食品 ---60
Thread[Thread-1,5,main] 生产者生产了食品 ---60
Thread[Thread-0,5,main] 生产者生产了食品 ---61
Thread[Thread-1,5,main] 生产者生产了食品 ---61
Thread[Thread-0,5,main] 生产者生产了食品 ---62
Thread[Thread-1,5,main] 生产者生产了食品 ---62
Thread[Thread-0,5,main] 生产者生产了食品 ---63
Thread[Thread-1,5,main] 生产者生产了食品 ---63
Thread[Thread-0,5,main] 生产者生产了食品 ---64
Thread[Thread-1,5,main] 生产者生产了食品 ---64
Thread[Thread-0,5,main] 生产者生产了食品 ---65
Thread[Thread-1,5,main] 生产者生产了食品 ---65
Thread[Thread-0,5,main] 生产者生产了食品 ---66
Thread[Thread-1,5,main] 生产者生产了食品 ---66
Thread[Thread-0,5,main] 生产者生产了食品 ---67
Thread[Thread-1,5,main] 生产者生产了食品 ---67
Thread[Thread-0,5,main] 生产者生产了食品 ---68
Thread[Thread-1,5,main] 生产者生产了食品 ---68
Thread[Thread-0,5,main] 生产者生产了食品 ---69
Thread[Thread-1,5,main] 生产者生产了食品 ---69
Thread[Thread-0,5,main] 生产者生产了食品 ---70
Thread[Thread-1,5,main] 生产者生产了食品 ---70
Thread[Thread-0,5,main] 生产者生产了食品 ---71
Thread[Thread-1,5,main] 生产者生产了食品 ---71
Thread[Thread-0,5,main] 生产者生产了食品 ---72
Thread[Thread-1,5,main] 生产者生产了食品 ---72
Thread[Thread-0,5,main] 生产者生产了食品 ---73
Thread[Thread-1,5,main] 生产者生产了食品 ---73
Thread[Thread-0,5,main] 生产者生产了食品 ---74
Thread[Thread-1,5,main] 生产者生产了食品 ---74
Thread[Thread-0,5,main] 生产者生产了食品 ---75
Thread[Thread-1,5,main] 生产者生产了食品 ---75
Thread[Thread-0,5,main] 生产者生产了食品 ---76
Thread[Thread-1,5,main] 生产者生产了食品 ---76
Thread[Thread-0,5,main] 生产者生产了食品 ---77
Thread[Thread-1,5,main] 生产者生产了食品 ---77
Thread[Thread-0,5,main] 生产者生产了食品 ---78
Thread[Thread-1,5,main] 生产者生产了食品 ---78
Thread[Thread-0,5,main] 生产者生产了食品 ---79
Thread[Thread-1,5,main] 生产者生产了食品 ---79
Thread[Thread-0,5,main] 生产者生产了食品 ---80
Thread[Thread-1,5,main] 生产者生产了食品 ---80
Thread[Thread-0,5,main] 生产者生产了食品 ---81
Thread[Thread-1,5,main] 生产者生产了食品 ---81
Thread[Thread-0,5,main] 生产者生产了食品 ---82
Thread[Thread-1,5,main] 生产者生产了食品 ---82
Thread[Thread-0,5,main] 生产者生产了食品 ---83
Thread[Thread-1,5,main] 生产者生产了食品 ---83
Thread[Thread-0,5,main] 生产者生产了食品 ---84
Thread[Thread-1,5,main] 生产者生产了食品 ---84
Thread[Thread-0,5,main] 生产者生产了食品 ---85
Thread[Thread-1,5,main] 生产者生产了食品 ---85
Thread[Thread-0,5,main] 生产者生产了食品 ---86
Thread[Thread-1,5,main] 生产者生产了食品 ---86
Thread[Thread-0,5,main] 生产者生产了食品 ---87
Thread[Thread-1,5,main] 生产者生产了食品 ---87
Thread[Thread-0,5,main] 生产者生产了食品 ---88
Thread[Thread-1,5,main] 生产者生产了食品 ---88
Thread[Thread-0,5,main] 生产者生产了食品 ---89
Thread[Thread-1,5,main] 生产者生产了食品 ---89
Thread[Thread-0,5,main] 生产者生产了食品 ---90
Thread[Thread-1,5,main] 生产者生产了食品 ---90
Thread[Thread-0,5,main] 生产者生产了食品 ---91
Thread[Thread-1,5,main] 生产者生产了食品 ---91
Thread[Thread-0,5,main] 生产者生产了食品 ---92
Thread[Thread-1,5,main] 生产者生产了食品 ---92
Thread[Thread-0,5,main] 生产者生产了食品 ---93
Thread[Thread-1,5,main] 生产者生产了食品 ---93
Thread[Thread-0,5,main] 生产者生产了食品 ---94
Thread[Thread-1,5,main] 生产者生产了食品 ---94
Thread[Thread-0,5,main] 生产者生产了食品 ---95
Thread[Thread-1,5,main] 生产者生产了食品 ---95
Thread[Thread-0,5,main] 生产者生产了食品 ---96
Thread[Thread-1,5,main] 生产者生产了食品 ---96
Thread[Thread-0,5,main] 生产者生产了食品 ---97
Thread[Thread-1,5,main] 生产者生产了食品 ---97
Thread[Thread-0,5,main] 生产者生产了食品 ---98
Thread[Thread-1,5,main] 生产者生产了食品 ---98
Thread[Thread-0,5,main] 生产者生产了食品 ---99
Thread[Thread-1,5,main] 生产者生产了食品 ---99
Thread[Thread-0,5,main] 生产者生产了食品 ---100
Thread[Thread-1,5,main] 生产者生产了食品 ---100
Thread[Thread-0,5,main] 生产者生产了食品 ---101
Thread[Thread-1,5,main] 生产者生产了食品 ---101
Thread[Thread-0,5,main] 生产者生产了食品 ---102
Thread[Thread-1,5,main] 生产者生产了食品 ---102
Thread[Thread-0,5,main] 生产者生产了食品 ---103
Thread[Thread-1,5,main] 生产者生产了食品 ---103
Thread[Thread-0,5,main] 生产者生产了食品 ---104
Thread[Thread-1,5,main] 生产者生产了食品 ---104
Thread[Thread-0,5,main] 生产者生产了食品 ---105
Thread[Thread-1,5,main] 生产者生产了食品 ---105
Thread[Thread-0,5,main] 生产者生产了食品 ---106
Thread[Thread-1,5,main] 生产者生产了食品 ---106
Thread[Thread-0,5,main] 生产者生产了食品 ---107
Thread[Thread-1,5,main] 生产者生产了食品 ---107
Thread[Thread-0,5,main] 生产者生产了食品 ---108
Thread[Thread-1,5,main] 生产者生产了食品 ---108
Thread[Thread-0,5,main] 生产者生产了食品 ---109
Thread[Thread-1,5,main] 生产者生产了食品 ---109
Thread[Thread-0,5,main] 生产者生产了食品 ---110
Thread[Thread-1,5,main] 生产者生产了食品 ---110
Thread[Thread-0,5,main] 生产者生产了食品 ---111
Thread[Thread-1,5,main] 生产者生产了食品 ---111
Thread[Thread-0,5,main] 生产者生产了食品 ---112
Thread[Thread-1,5,main] 生产者生产了食品 ---112
Thread[Thread-0,5,main] 生产者生产了食品 ---113
Thread[Thread-1,5,main] 生产者生产了食品 ---113
Thread[Thread-0,5,main] 生产者生产了食品 ---114
Thread[Thread-1,5,main] 生产者生产了食品 ---114
Thread[Thread-0,5,main] 生产者生产了食品 ---115
Thread[Thread-1,5,main] 生产者生产了食品 ---115
Thread[Thread-0,5,main] 生产者生产了食品 ---116
Thread[Thread-1,5,main] 生产者生产了食品 ---116
Thread[Thread-0,5,main] 生产者生产了食品 ---117
Thread[Thread-1,5,main] 生产者生产了食品 ---117
Thread[Thread-0,5,main] 生产者生产了食品 ---118
Thread[Thread-1,5,main] 生产者生产了食品 ---118
Thread[Thread-0,5,main] 生产者生产了食品 ---119
Thread[Thread-1,5,main] 生产者生产了食品 ---119
Thread[Thread-0,5,main] 生产者生产了食品 ---120
Thread[Thread-1,5,main] 生产者生产了食品 ---120
Thread[Thread-0,5,main] 生产者生产了食品 ---121
Thread[Thread-1,5,main] 生产者生产了食品 ---121
Thread[Thread-0,5,main] 生产者生产了食品 ---122
Thread[Thread-1,5,main] 生产者生产了食品 ---122
Thread[Thread-0,5,main] 生产者生产了食品 ---123
Thread[Thread-1,5,main] 生产者生产了食品 ---123
Thread[Thread-0,5,main] 生产者生产了食品 ---124
Thread[Thread-1,5,main] 生产者生产了食品 ---124
*/

——————分割线——————

 

 

/*

一般编程的时候会遇到一些大代码块,运行时间长,

例如,很多时候主函数里面有多个循环体,

其中的一些循环体循环次数很多,很消耗时间,

现实生活中的例子电脑可以一边播放音乐一边看电影

这也是涉及到多线程的应用领域

*/

 

class Xctx14
{
         publicstatic void main(String[] args)
         {
                  
 
  new Thread()
   {
            public void run()
            {
         for(  int  x=1;x<35 ;x++  )
                 {
                 System.out.println(Thread.currentThread().toString()+" 1号生产者生产了食品 ---"+x);
           }
            }
 
  }.start();//使用匿名内部类
 
  Runnable   a=new  Runnable()
   {
       public  void  run()
            {
          for( int  y=1;y<62 ;y++  )
           {
                   System.out.println(Thread.currentThread().toString()+" 2号生产者生产了食品 ---"+y);
            } 
            }
  
  };//注意这里不要忘记加";"
  new  Thread(a).start();
 
  for(  int  z=1;z<75 ;z++  )
         {
   System.out.println(Thread.currentThread().toString()+" 3号生产者生产了食品 ---"+z);
 
    }
         }
}
/*
以上代码编译运行结果如下:
Thread[Thread-0,5,main] 1号生产者生产了食品 ---1
Thread[Thread-0,5,main] 1号生产者生产了食品 ---2
Thread[Thread-1,5,main] 2号生产者生产了食品 ---1
Thread[main,5,main] 3号生产者生产了食品 ---1
Thread[Thread-1,5,main] 2号生产者生产了食品 ---2
Thread[Thread-0,5,main] 1号生产者生产了食品 ---3
Thread[Thread-1,5,main] 2号生产者生产了食品 ---3
Thread[Thread-1,5,main] 2号生产者生产了食品 ---4
Thread[Thread-1,5,main] 2号生产者生产了食品 ---5
Thread[Thread-1,5,main] 2号生产者生产了食品 ---6
Thread[Thread-1,5,main] 2号生产者生产了食品 ---7
Thread[Thread-1,5,main] 2号生产者生产了食品 ---8
Thread[Thread-1,5,main] 2号生产者生产了食品 ---9
Thread[main,5,main] 3号生产者生产了食品 ---2
Thread[main,5,main] 3号生产者生产了食品 ---3
Thread[main,5,main] 3号生产者生产了食品 ---4
Thread[main,5,main] 3号生产者生产了食品 ---5
Thread[main,5,main] 3号生产者生产了食品 ---6
Thread[main,5,main] 3号生产者生产了食品 ---7
Thread[main,5,main] 3号生产者生产了食品 ---8
Thread[main,5,main] 3号生产者生产了食品 ---9
Thread[main,5,main] 3号生产者生产了食品 ---10
Thread[main,5,main] 3号生产者生产了食品 ---11
Thread[main,5,main] 3号生产者生产了食品 ---12
Thread[Thread-1,5,main] 2号生产者生产了食品 ---10
Thread[Thread-1,5,main] 2号生产者生产了食品 ---11
Thread[Thread-1,5,main] 2号生产者生产了食品 ---12
Thread[Thread-1,5,main] 2号生产者生产了食品 ---13
Thread[Thread-1,5,main] 2号生产者生产了食品 ---14
Thread[Thread-1,5,main] 2号生产者生产了食品 ---15
Thread[Thread-1,5,main] 2号生产者生产了食品 ---16
Thread[Thread-1,5,main] 2号生产者生产了食品 ---17
Thread[Thread-1,5,main] 2号生产者生产了食品 ---18
Thread[Thread-1,5,main] 2号生产者生产了食品 ---19
Thread[Thread-1,5,main] 2号生产者生产了食品 ---20
Thread[Thread-1,5,main] 2号生产者生产了食品 ---21
Thread[Thread-1,5,main] 2号生产者生产了食品 ---22
Thread[Thread-1,5,main] 2号生产者生产了食品 ---23
Thread[Thread-1,5,main] 2号生产者生产了食品 ---24
Thread[Thread-1,5,main] 2号生产者生产了食品 ---25
Thread[Thread-1,5,main] 2号生产者生产了食品 ---26
Thread[Thread-1,5,main] 2号生产者生产了食品 ---27
Thread[Thread-1,5,main] 2号生产者生产了食品 ---28
Thread[Thread-1,5,main] 2号生产者生产了食品 ---29
Thread[Thread-1,5,main] 2号生产者生产了食品 ---30
Thread[Thread-1,5,main] 2号生产者生产了食品 ---31
Thread[Thread-1,5,main] 2号生产者生产了食品 ---32
Thread[Thread-1,5,main] 2号生产者生产了食品 ---33
Thread[Thread-1,5,main] 2号生产者生产了食品 ---34
Thread[Thread-1,5,main] 2号生产者生产了食品 ---35
Thread[Thread-1,5,main] 2号生产者生产了食品 ---36
Thread[Thread-1,5,main] 2号生产者生产了食品 ---37
Thread[Thread-1,5,main] 2号生产者生产了食品 ---38
Thread[Thread-1,5,main] 2号生产者生产了食品 ---39
Thread[Thread-1,5,main] 2号生产者生产了食品 ---40
Thread[Thread-1,5,main] 2号生产者生产了食品 ---41
Thread[Thread-1,5,main] 2号生产者生产了食品 ---42
Thread[Thread-1,5,main] 2号生产者生产了食品 ---43
Thread[Thread-1,5,main] 2号生产者生产了食品 ---44
Thread[Thread-1,5,main] 2号生产者生产了食品 ---45
Thread[Thread-1,5,main] 2号生产者生产了食品 ---46
Thread[Thread-1,5,main] 2号生产者生产了食品 ---47
Thread[Thread-1,5,main] 2号生产者生产了食品 ---48
Thread[Thread-1,5,main] 2号生产者生产了食品 ---49
Thread[Thread-1,5,main] 2号生产者生产了食品 ---50
Thread[Thread-1,5,main] 2号生产者生产了食品 ---51
Thread[Thread-1,5,main] 2号生产者生产了食品 ---52
Thread[Thread-1,5,main] 2号生产者生产了食品 ---53
Thread[Thread-1,5,main] 2号生产者生产了食品 ---54
Thread[Thread-1,5,main] 2号生产者生产了食品 ---55
Thread[Thread-1,5,main] 2号生产者生产了食品 ---56
Thread[Thread-1,5,main] 2号生产者生产了食品 ---57
Thread[Thread-1,5,main] 2号生产者生产了食品 ---58
Thread[Thread-1,5,main] 2号生产者生产了食品 ---59
Thread[Thread-1,5,main] 2号生产者生产了食品 ---60
Thread[Thread-1,5,main] 2号生产者生产了食品 ---61
Thread[Thread-0,5,main] 1号生产者生产了食品 ---4
Thread[Thread-0,5,main] 1号生产者生产了食品 ---5
Thread[Thread-0,5,main] 1号生产者生产了食品 ---6
Thread[Thread-0,5,main] 1号生产者生产了食品 ---7
Thread[Thread-0,5,main] 1号生产者生产了食品 ---8
Thread[Thread-0,5,main] 1号生产者生产了食品 ---9
Thread[Thread-0,5,main] 1号生产者生产了食品 ---10
Thread[Thread-0,5,main] 1号生产者生产了食品 ---11
Thread[Thread-0,5,main] 1号生产者生产了食品 ---12
Thread[Thread-0,5,main] 1号生产者生产了食品 ---13
Thread[Thread-0,5,main] 1号生产者生产了食品 ---14
Thread[Thread-0,5,main] 1号生产者生产了食品 ---15
Thread[Thread-0,5,main] 1号生产者生产了食品 ---16
Thread[Thread-0,5,main] 1号生产者生产了食品 ---17
Thread[Thread-0,5,main] 1号生产者生产了食品 ---18
Thread[Thread-0,5,main] 1号生产者生产了食品 ---19
Thread[Thread-0,5,main] 1号生产者生产了食品 ---20
Thread[Thread-0,5,main] 1号生产者生产了食品 ---21
Thread[Thread-0,5,main] 1号生产者生产了食品 ---22
Thread[Thread-0,5,main] 1号生产者生产了食品 ---23
Thread[Thread-0,5,main] 1号生产者生产了食品 ---24
Thread[Thread-0,5,main] 1号生产者生产了食品 ---25
Thread[Thread-0,5,main] 1号生产者生产了食品 ---26
Thread[Thread-0,5,main] 1号生产者生产了食品 ---27
Thread[Thread-0,5,main] 1号生产者生产了食品 ---28
Thread[Thread-0,5,main] 1号生产者生产了食品 ---29
Thread[Thread-0,5,main] 1号生产者生产了食品 ---30
Thread[Thread-0,5,main] 1号生产者生产了食品 ---31
Thread[Thread-0,5,main] 1号生产者生产了食品 ---32
Thread[Thread-0,5,main] 1号生产者生产了食品 ---33
Thread[Thread-0,5,main] 1号生产者生产了食品 ---34
Thread[main,5,main] 3号生产者生产了食品 ---13
Thread[main,5,main] 3号生产者生产了食品 ---14
Thread[main,5,main] 3号生产者生产了食品 ---15
Thread[main,5,main] 3号生产者生产了食品 ---16
Thread[main,5,main] 3号生产者生产了食品 ---17
Thread[main,5,main] 3号生产者生产了食品 ---18
Thread[main,5,main] 3号生产者生产了食品 ---19
Thread[main,5,main] 3号生产者生产了食品 ---20
Thread[main,5,main] 3号生产者生产了食品 ---21
Thread[main,5,main] 3号生产者生产了食品 ---22
Thread[main,5,main] 3号生产者生产了食品 ---23
Thread[main,5,main] 3号生产者生产了食品 ---24
Thread[main,5,main] 3号生产者生产了食品 ---25
Thread[main,5,main] 3号生产者生产了食品 ---26
Thread[main,5,main] 3号生产者生产了食品 ---27
Thread[main,5,main] 3号生产者生产了食品 ---28
Thread[main,5,main] 3号生产者生产了食品 ---29
Thread[main,5,main] 3号生产者生产了食品---30
Thread[main,5,main] 3号生产者生产了食品 ---31
Thread[main,5,main] 3号生产者生产了食品 ---32
Thread[main,5,main] 3号生产者生产了食品 ---33
Thread[main,5,main] 3号生产者生产了食品 ---34
Thread[main,5,main] 3号生产者生产了食品 ---35
Thread[main,5,main] 3号生产者生产了食品 ---36
Thread[main,5,main] 3号生产者生产了食品 ---37
Thread[main,5,main] 3号生产者生产了食品 ---38
Thread[main,5,main] 3号生产者生产了食品 ---39
Thread[main,5,main] 3号生产者生产了食品 ---40
Thread[main,5,main] 3号生产者生产了食品 ---41
Thread[main,5,main] 3号生产者生产了食品 ---42
Thread[main,5,main] 3号生产者生产了食品 ---43
Thread[main,5,main] 3号生产者生产了食品 ---44
Thread[main,5,main] 3号生产者生产了食品 ---45
Thread[main,5,main] 3号生产者生产了食品 ---46
Thread[main,5,main] 3号生产者生产了食品 ---47
Thread[main,5,main] 3号生产者生产了食品 ---48
Thread[main,5,main] 3号生产者生产了食品 ---49
Thread[main,5,main] 3号生产者生产了食品 ---50
Thread[main,5,main] 3号生产者生产了食品 ---51
Thread[main,5,main] 3号生产者生产了食品 ---52
Thread[main,5,main] 3号生产者生产了食品 ---53
Thread[main,5,main] 3号生产者生产了食品 ---54
Thread[main,5,main] 3号生产者生产了食品 ---55
Thread[main,5,main] 3号生产者生产了食品 ---56
Thread[main,5,main] 3号生产者生产了食品---57
Thread[main,5,main] 3号生产者生产了食品 ---58
Thread[main,5,main] 3号生产者生产了食品 ---59
Thread[main,5,main] 3号生产者生产了食品 ---60
Thread[main,5,main] 3号生产者生产了食品 ---61
Thread[main,5,main] 3号生产者生产了食品 ---62
Thread[main,5,main] 3号生产者生产了食品 ---63
Thread[main,5,main] 3号生产者生产了食品 ---64
Thread[main,5,main] 3号生产者生产了食品 ---65
Thread[main,5,main] 3号生产者生产了食品 ---66
Thread[main,5,main] 3号生产者生产了食品 ---67
Thread[main,5,main] 3号生产者生产了食品 ---68
Thread[main,5,main] 3号生产者生产了食品 ---69
Thread[main,5,main] 3号生产者生产了食品 ---70
Thread[main,5,main] 3号生产者生产了食品 ---71
Thread[main,5,main] 3号生产者生产了食品 ---72
Thread[main,5,main] 3号生产者生产了食品 ---73
Thread[main,5,main] 3号生产者生产了食品 ---74
*/

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值