Raix 发表于 2019-11-26 23:27

Java利用线程实现火车售票模式


-------------------------------官方大大,如果有误,一定提醒我或者帮我修改下噻,不要删帖不要删帖{:1_919:}{:1_919:}{:1_889:}-------------
第三贴,今晚写个利用线程实现火车票售票模式,纯当小白学习及老哥们复习
我觉得。。写上项目名+包名+类名是不是太基础了,,,


好趴,还是写上吧!!!


项目名:Thread
--------------www.threadRaix.com
--------------------testTrain.java

----------------------start------------------------
package www.threadRaix.com

import java.util.concurrtent.locks.ReentrantLock;

class WindowsTest implements Runnable{
          private int num = 1;    //次数

         //显示加锁,效率高!
         ReentrantLock rt = new ReentrantLock();
      //同步代码块,加监视器,监视器是一个共享的对象
      Object obj = new Object();
      
      //启动线程,自动调用并重写run方法
      publicvoid run(){
                while(true){
                     if(this.num > 0){
                               try{
                               //间隔1秒
                               Thread.sleep(100);
                               }catch(InterruptedException e){//本来想直接写Exception,解决一切问题,,但是为了让新手知道,如果报错就知道是哪里
                                       e.printStackTrace();
                               }
                     }

                     synchronized(obj){
                              if(this.num <= 100){
                                       System.out.println(Thread.currentThread().getName() + "窗口正在出售【" + num++ +"】号票!");
                              }else{
                                       break;
                              }
                     }
                }
      }
}


public class testTrain(){
         public static void mian(String[] args){
            WindowsTest threadOne   = new WinwodsTest();
            WindowsTest threadTwo   = new WindowsTest();
            WindowsTest threadThree   = new WindowsTest();

            new Thread(threadOne,   "窗口一").start();
            new Thread(threadTwo,   "窗口二").start();
            new Thread(threadThree,"窗口三").start();
         }
}



--------------------------------教程结束,基本关键部分代码都写了注释----------------------------------------------------------


--------------------------------本代码纯属手敲,复制粘贴锻炼不大,因为我也是新手之一,以后就做个代码搬运工惹--------


--------------------------------大佬勿喷,,暴躁老哥欢迎欢迎,我就喜欢这样的老哥,嘿嘿嘿---------------------------------
--------------------------------会的就当作复习一遍咯,嘿嘿嘿嘿,新手可以模范试试哈-----------------------

--------------------------------官方大大,如果有误,一定提醒我或者帮我修改下噻,不要删帖不要删帖{:1_893:}{:1_893:}{:1_936:}---------------













Raix 发表于 2019-11-27 10:07

mj2013ly 发表于 2019-11-27 08:36
ReentrantLock rt这个有何意义,整个程序都没调用过

忘记注释了,,,,{:1_890:}

Yoona520 发表于 2019-11-27 00:02

重入锁new了也没用?

幻象 发表于 2019-11-27 07:51

rt是干嘛的?也没见调用啊

mj2013ly 发表于 2019-11-27 08:36

ReentrantLock rt这个有何意义,整个程序都没调用过

heyong 发表于 2019-11-27 09:16

可以加个好友一起学习下吗 我在学JAVA

无限苦肉盖神 发表于 2019-11-27 10:58

黑马java教学就有这个

今天发布了吗 发表于 2019-12-5 20:39


         ReentrantLock rt = new ReentrantLock();
开头的这段代码的作用是?

BlueMoonWolf 发表于 2019-12-5 23:20

兄弟你这里的写法有问题。
synchronized 的是比较老的j2ee实现的内置的锁,比较重型的。。你用了ReentrantLock锁,就没有必要用那个了。。。直接用这个手工来开关ReentrantLock锁就行了。。


Raix 发表于 2019-12-6 21:45

BlueMoonWolf 发表于 2019-12-5 23:20
兄弟你这里的写法有问题。
synchronized 的是比较老的j2ee实现的内置的锁,比较重型的。。你用了Reentrant ...

知道惹 知道惹
页: [1]
查看完整版本: Java利用线程实现火车售票模式