zoukankan      html  css  js  c++  java
  • 第九周实验总结

    实验任务详情:

    完成火车站售票程序的模拟。
    要求:
    (1)总票数1000张;
    (2)10个窗口同时开始卖票;
    (3)卖票过程延时1秒钟;
    (4)不能出现一票多卖或卖出负数号票的情况。

    实验代码

    package work6;
    public class MyThread implements Runnable{
        private int ticket=999;
        public int getTicket() {
            return ticket;
        }
        public void setTicket(int ticket) {
            this.ticket = ticket;
        }
        public void run() {
            for(int i=0;i<1000;i++) {
                synchronized (this) {
                    if(ticket>=0) {
                        try {
                            Thread.sleep(0);
                        }catch(InterruptedException e) {
                            e.printStackTrace();
                        }
                        System.out.println(Thread.currentThread().getName()+"卖出一张票,还剩"+ticket+"张");
                        ticket--;
                    }
                }
            }
        }
    }
    package work6;
    
    public class Test {
        public static void main(String[] args) {
            MyThread my=new MyThread();
            Thread w1 = new Thread(my,"一号窗口");
            Thread w2 = new Thread(my,"二号窗口");
            Thread w3 = new Thread(my,"三号窗口");
            Thread w4 = new Thread(my,"四号窗口");
            Thread w5 = new Thread(my,"五号窗口");
            Thread w6 = new Thread(my,"六号窗口");
            Thread w7 = new Thread(my,"七号窗口");
            Thread w8 = new Thread(my,"八号窗口");
            Thread w9 = new Thread(my,"九号窗口");
            Thread w10 = new Thread(my,"十号窗口");
            w1.setPriority(Thread.NORM_PRIORITY);
            w2.setPriority(Thread.MIN_PRIORITY);
            w3.setPriority(Thread.MAX_PRIORITY);
            w1.start();
            w2.start();
            w3.start();
            w4.start();
            w5.start();
            w6.start();
            w7.start();
            w8.start();
            w9.start();
            w10.start();
        }
    }
    

    实验截图

    学习总结
    1.在Thread类中,可以通过 getname() 方法取得线程的名称,通过 setname()方法设置线程的名称
    2.判断线程是否启动
    因为线程通过Thread类之中的start()方法通知CPU这个线程已经准备好启动,然后就等待分配CPU资源,运行此线程。在Java中可以使用isAlive()方法来测试线程是否已经启动而且还在运行
    3.线程的休眠
    可以直接使用Thread.sleep()方法即可实现
    4.线程的强制运行
    可以使用join()方法让一个线程强制运行。在线程强制运行期间 其他线程无法运行,必须等待此线程完成之后才可以继续执行
    5.中断线程
    当一个线程运行时,另外一个线程可以直接通过interrupt()方法,中断其运行状态
    6.线程的优先级
    在Java线程操作中,哪个线程优先级高就有可能先被执行 所以可以使用setPriority()方法可以设置一个线程的优先级
    7.线程的礼让
    使用yield()方法可以将一个线程的操作暂时让给其他线程执行

  • 相关阅读:
    七七四十九劫,九九八十一难
    Android中用layer-list编写阴影效果
    Android 高手进阶之自定义View,自定义属性(带进度的圆形进度条)
    Effective C++ 24,25
    windows系统port监听
    线程同步辅助类——Exchanger
    C/C++中constkeyword
    【COCOS2DX-游戏开发之三三】TMX边界控制与小窗体内预览TMX
    IDFA的值什么时候会发生改变
    hadoop(六)
  • 原文地址:https://www.cnblogs.com/tangjiacheng/p/11739800.html
Copyright © 2011-2022 走看看