多线程的例子

                多线程的例子

要求:四个窗口卖一百张票。得意

分析:每个窗口卖的票不能重复,不能有0号票或者负号票,并且四个窗口不能卖同号票。所以可以用同步的方

(关键字:synchronized)。

1、方法:synchronized在函数代码块:

   public class ThreadDemo1 {

        public static void main(String[] args) {
            TestThread a = new TestThread();
            Thread tt = new Thread(a);
            //tt.setDeamon(true);
            tt.start();
            new Thread(a).start();
            new Thread(a).start();
            new Thread(a).start();
         }

     }
   class TestThread implements Runnable{
           private int tickets = 100;
           String str = new String("");
           public void run(){
              while(true){
                 synchronized(str){
                     if(tickets > 0){
                           try{
                               Thread.sleep(20);
                           }
                           catch(InterruptedException e){
                               e.printStackTrace();
                           }
                          System.out.println(Thread.currentThread().getName()+"卖票"+tickets--);
                       }
                  }
                //sale();
              }
          }

 

 

2、方法:在方法中写synchronized:大笑

    

   public class ThreadDemo1 {

        public static void main(String[] args) {
            TestThread a = new TestThread();
            Thread tt = new Thread(a);
            //tt.setDeamon(true);
            tt.start();
            new Thread(a).start();
            new Thread(a).start();
            new Thread(a).start();
         }

     }
   class TestThread implements Runnable{
           private int tickets = 100;
           String str = new String("");
           public void run(){
              while(true){

                 if(tickets > 0){
                           try{
                               Thread.sleep(20);
                           }
                           catch(InterruptedException e){
                               e.printStackTrace();
                           }
                          System.out.println(Thread.currentThread().getName()+"卖票"+tickets--);
                       }
                  }
                sale();
              }

   public synchronized void sale(){
          if(tickets > 0){
             try{
                 Thread.sleep(20);
             }
             catch(InterruptedException e){
                 e.printStackTrace();
            }

          System.out.println(Thread.currentThread().getName()+"卖票"+tickets--);
        }    

     } 

  }

 

 

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值