第九周课程总结&实验报告(七)

时间:2019-10-25
本文章向大家介绍第九周课程总结&实验报告(七),主要包括第九周课程总结&实验报告(七)使用实例、应用技巧、基本知识点总结和需要注意事项,具有一定的参考价值,需要的朋友可以参考一下。

一.实验题目

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

实验代码

package maipiao;

class MyThread implements Runnable{
    private int ticket = 1000;
    public void run()
    {
        if(ticket>0)
      {
        for(int i=0;i<1000;i++)
        {
            try
            {
                Thread.sleep(0);
            }
            catch(Exception  e)
            {
            }
           System.out.println(Thread.currentThread().getName()+"卖票:ticket="+ticket--);
           if(ticket==0)
           {
               break;
           }
        }
      }
    }
}

package maipiao;


public class test {


public static void main(String[] args) {

MyThread mt1 = new MyThread();
Thread t1 = new Thread(mt1,"窗口1");
Thread t2 = new Thread(mt1,"窗口2");
Thread t3 = new Thread(mt1,"窗口3");
Thread t4 = new Thread(mt1,"窗口4");
Thread t5 = new Thread(mt1,"窗口5");
Thread t6 = new Thread(mt1,"窗口6");
Thread t7 = new Thread(mt1,"窗口7");
Thread t8 = new Thread(mt1,"窗口8");
Thread t9 = new Thread(mt1,"窗口9");
Thread t10 = new Thread(mt1,"窗口10");
t1.start();
t2.start();
t3.start();
t4.start();
t5.start();
t6.start();
t7.start();
t8.start();
t9.start();
t10.start();
}

} 

实验截图

二.学习总结

线程操作的主要方法

1.在Thread类中,可以通过 getname() 方法取得线程的名称,通过 setname()方法设置线程的名称

2.判断线程是否启动
因为线程通过Thread类之中的start()方法通知CPU这个线程已经准备好启动,然后就等待分配CPU资源,运行此线程。在Java中可以使用isAlive()方法来测试线程是否已经启动而且还在运行

3.线程的休眠
可以直接使用Thread.sleep()方法即可实现

4.线程的强制运行
可以使用join()方法让一个线程强制运行。在线程强制运行期间 其他线程无法运行,必须等待此线程完成之后才可以继续执行

5.中断线程
当一个线程运行时,另外一个线程可以直接通过interrupt()方法,中断其运行状态

6.线程的优先级

在Java线程操作中,哪个线程优先级高就有可能先被执行 所以可以使用setPriority()方法可以设置一个线程的优先级

7.线程的礼让
使用yield()方法可以将一个线程的操作暂时让给其他线程执行

原文地址:https://www.cnblogs.com/tb-0706/p/11738691.html