Day 64

_线程控制

  1. 方法名说明
    static void sleep(long millis)使当前正在执行的线程停留(暂停执行)指定的毫秒数
    void join()等待这个线程死亡
    void setDaemon(boolean on)将此线程白哦极为守护线程,当运行的线程都是守护线程时,java虚拟机将会退出
  2. package demo18;
    
    public class Thread_Demo_04 {
        public static void main(String[] args) {
            /*
            static void sleep(long millis)      使当前正在执行的线程停留(暂停执行)指定的毫秒数
            void join()                         等待这个线程死亡
            void setDaemon(boolean on)          将此线程白哦极为守护线程,当运行的线程都是守护线程时,java虚拟机将会退出
             */
    
            MyThread_04 m1 = new MyThread_04("火箭弹");
            MyThread_04 m2 = new MyThread_04("意大利炮");
            MyThread_04 m3 = new MyThread_04("东风");
    
            // static void sleep(long millis)     使当前正在执行的线程停留(暂停执行)指定的毫秒数
            // 在继承的Thread类中使用
    
    
            // void join()                         等待这个线程死亡
    
            // void setDaemon(boolean on)        将此线程白哦极为守护线程,当运行的线程都是守护线程时,java虚拟机将会退出
            m2.setDaemon(true);
            m3.setDaemon(true);
    
            
            m1.start();
            try {
                m1.join();
            } catch (InterruptedException e) {
                e.printStackTrace();
            }
            m2.start();
            m3.start();
    
        }
    }
    --------------------------------------
    package demo18;
    
    public class MyThread_04 extends Thread{
        public MyThread_04() {
        }
    
        public MyThread_04(String name) {
            super(name);
        }
    
        @Override
        public void run() {
            for (int i = 0; i < 100; i++) {
                System.out.println(getName()+i+"号 发射");
                try {
                    sleep(100);
                } catch (InterruptedException e) {
                    e.printStackTrace();
                }
            }
        }
    }
    ======================================
    火箭弹0号 发射
    火箭弹1号 发射
    火箭弹2号 发射
    火箭弹3号 发射
    火箭弹4号 发射
    火箭弹5号 发射
    火箭弹6号 发射
    火箭弹7号 发射
    火箭弹8号 发射
    火箭弹9号 发射
    火箭弹10号 发射
    火箭弹11号 发射
    火箭弹12号 发射
    火箭弹13号 发射
    火箭弹14号 发射
    火箭弹15号 发射
    火箭弹16号 发射
    火箭弹17号 发射
    火箭弹18号 发射
    火箭弹19号 发射
    火箭弹20号 发射
    火箭弹21号 发射
    火箭弹22号 发射
    火箭弹23号 发射
    火箭弹24号 发射
    火箭弹25号 发射
    火箭弹26号 发射
    火箭弹27号 发射
    火箭弹28号 发射
    火箭弹29号 发射
    火箭弹30号 发射
    火箭弹31号 发射
    火箭弹32号 发射
    火箭弹33号 发射
    火箭弹34号 发射
    火箭弹35号 发射
    火箭弹36号 发射
    火箭弹37号 发射
    火箭弹38号 发射
    火箭弹39号 发射
    火箭弹40号 发射
    火箭弹41号 发射
    火箭弹42号 发射
    火箭弹43号 发射
    火箭弹44号 发射
    火箭弹45号 发射
    火箭弹46号 发射
    火箭弹47号 发射
    火箭弹48号 发射
    火箭弹49号 发射
    火箭弹50号 发射
    火箭弹51号 发射
    火箭弹52号 发射
    火箭弹53号 发射
    火箭弹54号 发射
    火箭弹55号 发射
    火箭弹56号 发射
    火箭弹57号 发射
    火箭弹58号 发射
    火箭弹59号 发射
    火箭弹60号 发射
    火箭弹61号 发射
    火箭弹62号 发射
    火箭弹63号 发射
    火箭弹64号 发射
    火箭弹65号 发射
    火箭弹66号 发射
    火箭弹67号 发射
    火箭弹68号 发射
    火箭弹69号 发射
    火箭弹70号 发射
    火箭弹71号 发射
    火箭弹72号 发射
    火箭弹73号 发射
    火箭弹74号 发射
    火箭弹75号 发射
    火箭弹76号 发射
    火箭弹77号 发射
    火箭弹78号 发射
    火箭弹79号 发射
    火箭弹80号 发射
    火箭弹81号 发射
    火箭弹82号 发射
    火箭弹83号 发射
    火箭弹84号 发射
    火箭弹85号 发射
    火箭弹86号 发射
    火箭弹87号 发射
    火箭弹88号 发射
    火箭弹89号 发射
    火箭弹90号 发射
    火箭弹91号 发射
    火箭弹92号 发射
    火箭弹93号 发射
    火箭弹94号 发射
    火箭弹95号 发射
    火箭弹96号 发射
    火箭弹97号 发射
    火箭弹98号 发射
    火箭弹99号 发射
    意大利炮0号 发射
    东风0号 发射
    
    Process finished with exit code 0
    

_实现Runnable接口的方式实现多线程

  1. 方式2:实现Runnable接口

    • 定义一个类MyRunnable实现Runnable接口
    • 在MyRunnable类中重写run()方法
    • 创建MyRunnable类的对象
    • 创建Thread类的对象,把MyRunnable对象作为构造方法参数
    • 启动线程
  2. package demo18;
    
    public class Thread_Demo_05 {
        public static void main(String[] args) {
            MyRunnable_01 r1 = new MyRunnable_01();
            MyRunnable_01 r2 = new MyRunnable_01();
            MyRunnable_01 r3 = new MyRunnable_01();
    
            /*
            public Thread(Runnable target, String name)
            分配一个新的Thread对象。 此构造具有相同的效果Thread (null, target, name) 。
            参数:
            target - 启动此线程时调用其run方法的对象。 如果null ,则调用此线程的run方法。
             */
            Thread t1 = new Thread(r1, "火箭弹");
            Thread t2 = new Thread(r2, "东风");
            Thread t3 = new Thread(r3, "洲际导弹");
    
            t1.start();
            t2.start();
            t3.start();
    
        }
    }
    ------------------------------------------
    package demo18;
    
    public class MyRunnable_01 implements Runnable {
        @Override
        public void run() {
            for (int i = 0; i < 100; i++) {
                System.out.println("第"+i+"号"+Thread.currentThread().getName() +"发射");
            }
        }
    }
    ========================================0号火箭弹发射
    第1号火箭弹发射
    第2号火箭弹发射
    第3号火箭弹发射
    第4号火箭弹发射
    第5号火箭弹发射
    第6号火箭弹发射
    第7号火箭弹发射
    第8号火箭弹发射
    第9号火箭弹发射
    第10号火箭弹发射
    第11号火箭弹发射
    第12号火箭弹发射
    第13号火箭弹发射
    第14号火箭弹发射
    第15号火箭弹发射
    第16号火箭弹发射
    第17号火箭弹发射
    第18号火箭弹发射
    第19号火箭弹发射
    第20号火箭弹发射
    第21号火箭弹发射
    第22号火箭弹发射
    第23号火箭弹发射
    第24号火箭弹发射
    第25号火箭弹发射
    第26号火箭弹发射
    第27号火箭弹发射
    第28号火箭弹发射
    第29号火箭弹发射
    第30号火箭弹发射
    第31号火箭弹发射
    第32号火箭弹发射
    第33号火箭弹发射
    第34号火箭弹发射
    第35号火箭弹发射
    第36号火箭弹发射
    第37号火箭弹发射
    第38号火箭弹发射
    第39号火箭弹发射
    第40号火箭弹发射
    第41号火箭弹发射
    第42号火箭弹发射
    第43号火箭弹发射
    第44号火箭弹发射
    第45号火箭弹发射
    第46号火箭弹发射
    第47号火箭弹发射
    第48号火箭弹发射
    第49号火箭弹发射
    第50号火箭弹发射
    第0号东风发射
    第51号火箭弹发射
    第1号东风发射
    第52号火箭弹发射
    第53号火箭弹发射
    第54号火箭弹发射
    第55号火箭弹发射
    第56号火箭弹发射
    第57号火箭弹发射
    第58号火箭弹发射
    第59号火箭弹发射
    第60号火箭弹发射
    第61号火箭弹发射
    第62号火箭弹发射
    第63号火箭弹发射
    第64号火箭弹发射
    第65号火箭弹发射
    第66号火箭弹发射
    第67号火箭弹发射
    第68号火箭弹发射
    第69号火箭弹发射
    第70号火箭弹发射
    第71号火箭弹发射
    第72号火箭弹发射
    第73号火箭弹发射
    第74号火箭弹发射
    第75号火箭弹发射
    第76号火箭弹发射
    第2号东风发射
    第77号火箭弹发射
    第3号东风发射
    第78号火箭弹发射
    第79号火箭弹发射
    第80号火箭弹发射
    第81号火箭弹发射
    第82号火箭弹发射
    第83号火箭弹发射
    第84号火箭弹发射
    第85号火箭弹发射
    第86号火箭弹发射
    第87号火箭弹发射
    第88号火箭弹发射
    第89号火箭弹发射
    第90号火箭弹发射
    第91号火箭弹发射
    第92号火箭弹发射
    第93号火箭弹发射
    第94号火箭弹发射
    第95号火箭弹发射
    第96号火箭弹发射
    第97号火箭弹发射
    第98号火箭弹发射
    第99号火箭弹发射
    第4号东风发射
    第5号东风发射
    第6号东风发射
    第7号东风发射
    第8号东风发射
    第9号东风发射
    第10号东风发射
    第11号东风发射
    第12号东风发射
    第13号东风发射
    第14号东风发射
    第15号东风发射
    第16号东风发射
    第17号东风发射
    第18号东风发射
    第19号东风发射
    第20号东风发射
    第21号东风发射
    第22号东风发射
    第23号东风发射
    第24号东风发射
    第25号东风发射
    第26号东风发射
    第27号东风发射
    第28号东风发射
    第29号东风发射
    第30号东风发射
    第31号东风发射
    第32号东风发射
    第33号东风发射
    第34号东风发射
    第35号东风发射
    第36号东风发射
    第37号东风发射
    第38号东风发射
    第39号东风发射
    第40号东风发射
    第41号东风发射
    第42号东风发射
    第43号东风发射
    第44号东风发射
    第45号东风发射
    第46号东风发射
    第47号东风发射
    第48号东风发射
    第49号东风发射
    第50号东风发射
    第51号东风发射
    第52号东风发射
    第53号东风发射
    第54号东风发射
    第55号东风发射
    第56号东风发射
    第57号东风发射
    第58号东风发射
    第59号东风发射
    第60号东风发射
    第61号东风发射
    第62号东风发射
    第63号东风发射
    第64号东风发射
    第65号东风发射
    第66号东风发射
    第67号东风发射
    第68号东风发射
    第69号东风发射
    第70号东风发射
    第71号东风发射
    第72号东风发射
    第73号东风发射
    第74号东风发射
    第75号东风发射
    第76号东风发射
    第77号东风发射
    第78号东风发射
    第79号东风发射
    第80号东风发射
    第81号东风发射
    第82号东风发射
    第83号东风发射
    第84号东风发射
    第85号东风发射
    第86号东风发射
    第87号东风发射
    第88号东风发射
    第89号东风发射
    第90号东风发射
    第91号东风发射
    第92号东风发射
    第93号东风发射
    第94号东风发射
    第95号东风发射
    第96号东风发射
    第97号东风发射
    第98号东风发射
    第99号东风发射
    第0号洲际导弹发射
    第1号洲际导弹发射
    第2号洲际导弹发射
    第3号洲际导弹发射
    第4号洲际导弹发射
    第5号洲际导弹发射
    第6号洲际导弹发射
    第7号洲际导弹发射
    第8号洲际导弹发射
    第9号洲际导弹发射
    第10号洲际导弹发射
    第11号洲际导弹发射
    第12号洲际导弹发射
    第13号洲际导弹发射
    第14号洲际导弹发射
    第15号洲际导弹发射
    第16号洲际导弹发射
    第17号洲际导弹发射
    第18号洲际导弹发射
    第19号洲际导弹发射
    第20号洲际导弹发射
    第21号洲际导弹发射
    第22号洲际导弹发射
    第23号洲际导弹发射
    第24号洲际导弹发射
    第25号洲际导弹发射
    第26号洲际导弹发射
    第27号洲际导弹发射
    第28号洲际导弹发射
    第29号洲际导弹发射
    第30号洲际导弹发射
    第31号洲际导弹发射
    第32号洲际导弹发射
    第33号洲际导弹发射
    第34号洲际导弹发射
    第35号洲际导弹发射
    第36号洲际导弹发射
    第37号洲际导弹发射
    第38号洲际导弹发射
    第39号洲际导弹发射
    第40号洲际导弹发射
    第41号洲际导弹发射
    第42号洲际导弹发射
    第43号洲际导弹发射
    第44号洲际导弹发射
    第45号洲际导弹发射
    第46号洲际导弹发射
    第47号洲际导弹发射
    第48号洲际导弹发射
    第49号洲际导弹发射
    第50号洲际导弹发射
    第51号洲际导弹发射
    第52号洲际导弹发射
    第53号洲际导弹发射
    第54号洲际导弹发射
    第55号洲际导弹发射
    第56号洲际导弹发射
    第57号洲际导弹发射
    第58号洲际导弹发射
    第59号洲际导弹发射
    第60号洲际导弹发射
    第61号洲际导弹发射
    第62号洲际导弹发射
    第63号洲际导弹发射
    第64号洲际导弹发射
    第65号洲际导弹发射
    第66号洲际导弹发射
    第67号洲际导弹发射
    第68号洲际导弹发射
    第69号洲际导弹发射
    第70号洲际导弹发射
    第71号洲际导弹发射
    第72号洲际导弹发射
    第73号洲际导弹发射
    第74号洲际导弹发射
    第75号洲际导弹发射
    第76号洲际导弹发射
    第77号洲际导弹发射
    第78号洲际导弹发射
    第79号洲际导弹发射
    第80号洲际导弹发射
    第81号洲际导弹发射
    第82号洲际导弹发射
    第83号洲际导弹发射
    第84号洲际导弹发射
    第85号洲际导弹发射
    第86号洲际导弹发射
    第87号洲际导弹发射
    第88号洲际导弹发射
    第89号洲际导弹发射
    第90号洲际导弹发射
    第91号洲际导弹发射
    第92号洲际导弹发射
    第93号洲际导弹发射
    第94号洲际导弹发射
    第95号洲际导弹发射
    第96号洲际导弹发射
    第97号洲际导弹发射
    第98号洲际导弹发射
    第99号洲际导弹发射
    
    Process finished with exit code 0
    

_卖票

  1. 需求:某电影院目前正在上映国产大片,共有100张票,而它有3个窗口卖票,请设计一个模拟程序模拟该电影院卖票

  2. 思路:

    • 定义一个类SellTicket实现Runnable接口,里面定义一个成员变量:priviate int tickets = 100;
    • 在Sellticket类中重写run()方法实现卖票,代码步骤如下:
      • 判断票数大于0,就卖票,并告知时哪个窗口卖的
      • 卖了票之后,总票数减1
      • 票没有了,也有可能有人来问,所以这里用死循环让卖票的动作一直持续下去
    • 定义一个SellTicketDemo,里面与偶mian方法,代码步骤如下:
      • 创建一个SellTicket类的对象
      • 创建3个Thread类的对象,把SellTicket对象作为构造方法的参数,并给出对应的窗口名称
      • 启动线程
  3. package demo19;
    
    public class Thread_Demo_01 {
        public static void main(String[] args) {
            /*
            1. 需求:某电影院目前正在上映国产大片,共有100张票,而它有3个窗口卖票,请设计一个模拟程序模拟该电影院卖票
            2. 思路:
               - 定义一个类SellTicket实现Runnable接口,里面定义一个成员变量:priviate int tickets = 100;
               - 在SellTicket类中重写run()方法实现卖票,代码步骤如下:
                 - 判断票数大于0,就卖票,并告知时哪个窗口卖的
                 - 卖了票之后,总票数减1
                 - 票没有了,也有可能有人来问,所以这里用死循环让卖票的动作一直持续下去
               - 定义一个SellTicketDemo,里面与偶mian方法,代码步骤如下:
                 - 创建一个SellTicket类的对象
                 - 创建3个Thread类的对象,把SellTicket对象作为构造方法的参数,并给出对应的窗口名称
                 - 启动线程
             */
    
            SellTicket st1 = new SellTicket();
            SellTicket st2 = new SellTicket();
            SellTicket st3 = new SellTicket();
    
            Thread t1 = new Thread(st1, "窗口1");
            Thread t2 = new Thread(st2, "窗口2");
            Thread t3 = new Thread(st3, "窗口3");
    
            t1.start();
            t2.start();
            t3.start();
        }
    }
    -----------------------------------
    package demo19;
    
    public class SellTicket implements Runnable {
    
        private int tickets = 200;
        @Override
        public void run() {
            while (true) {
                if (tickets>0) {
                    System.out.println(Thread.currentThread().getName() + "正在出售第" + tickets + "张票");
                    tickets--;
    //                try {
    //                    Thread.sleep(100);
    //                } catch (InterruptedException e) {
    //                    e.printStackTrace();
    //                }
                }
            }
        }
    }
    ========================================
    窗口1正在出售第200张票
    窗口2正在出售第200张票
    窗口2正在出售第198张票
    窗口2正在出售第197张票
    窗口2正在出售第196张票
    窗口2正在出售第195张票
    窗口2正在出售第194张票
    窗口2正在出售第193张票
    窗口2正在出售第192张票
    窗口2正在出售第191张票
    窗口2正在出售第190张票
    窗口2正在出售第189张票
    窗口2正在出售第188张票
    窗口2正在出售第187张票
    窗口2正在出售第186张票
    窗口2正在出售第185张票
    窗口2正在出售第184张票
    窗口1正在出售第191张票
    窗口1正在出售第183张票
    窗口1正在出售第182张票
    窗口1正在出售第181张票
    窗口1正在出售第180张票
    窗口1正在出售第179张票
    窗口1正在出售第178张票
    窗口1正在出售第177张票
    窗口1正在出售第176张票
    窗口1正在出售第175张票
    窗口1正在出售第174张票
    窗口1正在出售第173张票
    窗口1正在出售第172张票
    窗口1正在出售第171张票
    窗口1正在出售第170张票
    窗口1正在出售第169张票
    窗口1正在出售第168张票
    窗口1正在出售第167张票
    窗口1正在出售第166张票
    窗口1正在出售第165张票
    窗口1正在出售第164张票
    窗口1正在出售第163张票
    窗口1正在出售第162张票
    窗口1正在出售第161张票
    窗口1正在出售第160张票
    窗口1正在出售第159张票
    窗口1正在出售第158张票
    窗口1正在出售第157张票
    窗口1正在出售第156张票
    窗口1正在出售第155张票
    窗口1正在出售第154张票
    窗口1正在出售第153张票
    窗口1正在出售第152张票
    窗口1正在出售第151张票
    窗口1正在出售第150张票
    窗口1正在出售第148张票
    窗口1正在出售第147张票
    窗口1正在出售第146张票
    窗口1正在出售第145张票
    窗口1正在出售第144张票
    窗口1正在出售第143张票
    窗口1正在出售第142张票
    窗口1正在出售第141张票
    窗口1正在出售第140张票
    窗口1正在出售第139张票
    窗口1正在出售第138张票
    窗口1正在出售第137张票
    窗口1正在出售第136张票
    窗口1正在出售第135张票
    窗口2正在出售第148张票
    窗口1正在出售第134张票
    窗口2正在出售第133张票
    窗口1正在出售第132张票
    窗口2正在出售第131张票
    窗口1正在出售第130张票
    窗口2正在出售第129张票
    窗口1正在出售第128张票
    窗口2正在出售第127张票
    窗口1正在出售第126张票
    窗口2正在出售第125张票
    窗口1正在出售第124张票
    窗口2正在出售第123张票
    窗口1正在出售第122张票
    窗口2正在出售第121张票
    窗口2正在出售第119张票
    窗口2正在出售第118张票
    窗口2正在出售第117张票
    窗口2正在出售第116张票
    窗口3正在出售第116张票
    窗口3正在出售第114张票
    窗口3正在出售第113张票
    窗口3正在出售第112张票
    窗口3正在出售第111张票
    窗口3正在出售第110张票
    窗口3正在出售第109张票
    窗口3正在出售第108张票
    窗口3正在出售第107张票
    窗口3正在出售第106张票
    窗口3正在出售第105张票
    窗口3正在出售第104张票
    窗口3正在出售第103张票
    窗口3正在出售第102张票
    窗口3正在出售第101张票
    窗口3正在出售第100张票
    窗口3正在出售第99张票
    窗口3正在出售第98张票
    窗口3正在出售第97张票
    窗口3正在出售第96张票
    窗口3正在出售第95张票
    窗口1正在出售第120张票
    窗口1正在出售第93张票
    窗口1正在出售第92张票
    窗口1正在出售第91张票
    窗口1正在出售第90张票
    窗口1正在出售第89张票
    窗口1正在出售第88张票
    窗口1正在出售第87张票
    窗口3正在出售第94张票
    窗口3正在出售第85张票
    窗口3正在出售第84张票
    窗口3正在出售第83张票
    窗口3正在出售第82张票
    窗口3正在出售第81张票
    窗口3正在出售第80张票
    窗口3正在出售第79张票
    窗口3正在出售第78张票
    窗口3正在出售第77张票
    窗口3正在出售第76张票
    窗口3正在出售第75张票
    窗口3正在出售第74张票
    窗口3正在出售第73张票
    窗口3正在出售第72张票
    窗口3正在出售第71张票
    窗口3正在出售第70张票
    窗口3正在出售第69张票
    窗口3正在出售第68张票
    窗口3正在出售第67张票
    窗口3正在出售第66张票
    窗口3正在出售第65张票
    窗口3正在出售第64张票
    窗口3正在出售第63张票
    窗口3正在出售第62张票
    窗口3正在出售第61张票
    窗口3正在出售第60张票
    窗口3正在出售第59张票
    窗口3正在出售第58张票
    窗口3正在出售第57张票
    窗口3正在出售第56张票
    窗口3正在出售第55张票
    窗口3正在出售第54张票
    窗口3正在出售第53张票
    窗口3正在出售第52张票
    窗口3正在出售第51张票
    窗口3正在出售第50张票
    窗口3正在出售第49张票
    窗口3正在出售第48张票
    窗口3正在出售第47张票
    窗口3正在出售第46张票
    窗口2正在出售第115张票
    窗口2正在出售第44张票
    窗口2正在出售第43张票
    窗口2正在出售第42张票
    窗口2正在出售第41张票
    窗口2正在出售第40张票
    窗口2正在出售第39张票
    窗口2正在出售第38张票
    窗口2正在出售第37张票
    窗口2正在出售第36张票
    窗口3正在出售第45张票
    窗口1正在出售第86张票
    窗口3正在出售第34张票
    窗口2正在出售第35张票
    窗口3正在出售第32张票
    窗口1正在出售第33张票
    窗口3正在出售第30张票
    窗口2正在出售第31张票
    窗口3正在出售第28张票
    窗口1正在出售第29张票
    窗口3正在出售第26张票
    窗口2正在出售第27张票
    窗口3正在出售第24张票
    窗口1正在出售第25张票
    窗口1正在出售第21张票
    窗口1正在出售第20张票
    窗口1正在出售第19张票
    窗口1正在出售第18张票
    窗口1正在出售第17张票
    窗口1正在出售第16张票
    窗口1正在出售第15张票
    窗口3正在出售第22张票
    窗口2正在出售第23张票
    窗口3正在出售第13张票
    窗口1正在出售第14张票
    窗口3正在出售第11张票
    窗口2正在出售第12张票
    窗口3正在出售第9张票
    窗口1正在出售第10张票
    窗口3正在出售第7张票
    窗口2正在出售第8张票
    窗口2正在出售第4张票
    窗口2正在出售第3张票
    窗口3正在出售第5张票
    窗口3正在出售第1张票
    窗口1正在出售第6张票
    窗口2正在出售第2张票
    
    Process finished with exit code 130
    
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值