java并发编程之Thread和Runnable之实例应用(三)

来源:互联网 发布:网络信息监控 编辑:程序博客网 时间:2024/06/08 17:59

1.Thread版买票:

class MyThread extends Thread{          private int ticket = 10;      private String name;      public MyThread(String name){          this.name =name;      }      public void run(){          for(int i =0;i<500;i++){              if(this.ticket>0){                  System.out.println(this.name+"卖票---->"+(this.ticket--));              }          }      }  }public class ThreadDemo {    public static void main(String[] args) {          MyThread mt1= new MyThread("一号窗口");          MyThread mt2= new MyThread("二号窗口");          MyThread mt3= new MyThread("三号窗口");          mt1.start();          mt2.start();          mt3.start();      }    }
结果:

1.Runnable版买票:

public class MyRunnable implements Runnable{      private int ticket =10;      private String name;      public void run(){          for(int i =0;i<500;i++){              if(this.ticket>0){                  System.out.println(Thread.currentThread().getName()+"卖票---->"+(this.ticket--));              }          }      }  }public class RunnableDemo {public static void main(String[] args) {           // TODO Auto-generated method stub           //设计三个线程           MyRunnable mt = new MyRunnable();           Thread t1 = new Thread(mt,"一号窗口");           Thread t2 = new Thread(mt,"二号窗口");           Thread t3 = new Thread(mt,"三号窗口");           t1.start();           t2.start();           t3.start();      }}
结果:【显示的结果次数多了其实会有问题的,这里其实是需要加入同步操作(即互斥锁)来保持线程操作的原子性,这后面在说。

结论:

1)Thread版是多个线程分别完成自己的任务。

2)Runnable版是多个线程共同完成一个任务。



阅读全文
1 0
原创粉丝点击