黑马程序员Java培训、Android培训-Java 学习过程记录_多线程3

线程学习代码备份:

class Producer implements Runnable

{

       Q q;

       public Producer(Q q)

       {

              this.q = q;

       }

       public void run()

       {

              int i = 0;

              while(true)

              {

                     /*synchronized(q)

                     {

                                   if(q.bFull)

                                          try{q.wait();}catch(Exception e){}

                                   if(i == 0)

                                   {

                                                 q.name = "zhangsan";

                                                 try{Thread.sleep(1);}catch(Exception e){}

                                                 q.sex = "male";

                                   }

                                   else

                                   {

                                                 q.name = "lisi";

                                                 q.sex = "female";

                                   }

                                   bFull = true;

                                   q.notify();

                     }*/  

                                   if(i == 0)

                                                 q.put("zhangsan","male");

                                   else

                                                 q.put("lisi","female");

                                   i = (i+1)%2;                 

              }

       }

}

class Consumer implements Runnable

{

       Q q;

       public Consumer(Q q)

       {

              this.q = q;

       }

       public void run()

       {

              while(true)

              {

                            /*synchronized(q)

                            {

                                          if(!q.bFull)

                                                        q.wait();

                                          System.out.println(q.name);

                                          System.out.println(":" + q.sex);

                                          bFull = false;

                                          q.notify();

                       }*/

                       q.get();

              }

       }

}

class Q                 

//将变量和实现同步控制块的方法封装在一起,有利于简化程序结构,更符合面向对象的思想;

{

       String name = "unknown";

       String sex = "unknown";

       boolean bFull = false;

       public synchronized void put(String name,String sex)         //线程同步控制

       {

                            if(bFull)

                                          try{wait();}catch(Exception e){}  //线程通信

                            this.name = name;

                            //try{Thread.sleep(1);}catch(Exception e){}

                            this.sex = sex;

                            bFull = true;

                            notify();

       }

       public synchronized void get()

       {

                            if(!bFull)

                                          try{wait();}catch(Exception e){}

                            System.out.print(name);

                            System.out.println(":"+sex);

                            bFull = false;

                            notify();

       }           

}

class ThreadCommunation

{

       public static void main(String [] args)

       {

              /*Q q = new Q();

              new Thread(new Producer(q)).start();

              new Thread(new Consumer(q)).start();*/

              /*Thread t = new Thread(new Threadtest());*/

              ThreadTest tt = new ThreadTest();                  

              new Thread(tt).start();                                      //tt作为线程的参数;

              for(int i=0;i<100;i++)

              {

                     if(i == 50)

                            tt.stopMe();                 

                     System.out.println("main() is running");

              }

       }

}

class ThreadTest implements Runnable

{

       private boolean bStop = false;

       public void stopMe()

       {

              bStop = true;

       }

       public void run()

       {

              while(!bStop)

              {

                     System.out.println(Thread.currentThread().getName()+"is running");

              }

       }

}

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值