实验7
实验任务详情:
完成火车站售票程序的模拟。
要求:
- (1)总票数1000张;
- (2)10个窗口同时开始卖票;
- (3)卖票过程延时1秒钟;
- (4)不能出现一票多卖或卖出负数号票的情况。
实验过程
package shiyan7;
public class Mythread implements Runnable {
private int ticket = 1000;
public void run() {
for(int i = 0;i < 1000;i ++) {
synchronized(this) {
if(ticket > 0) {
try {
Thread.sleep(1000);
}catch(InterruptedException e) {
e.printStackTrace();
}
System.out.println(Thread.currentThread().getName()+"卖票:"+ticket--);
}
}
}
}
}
package shiyan7;
public class Maipiaoge {
public static void main(String args[]) {
Mythread mp = new Mythread();
for(int i = 1;i < 11;i ++) {
Thread xc[] = new Thread[11];
xc[i] = new Thread(mp,"买票窗口" + i);
xc[i].start();
}
}
}
实现结果
因等一秒要点时间,所以这个截屏没有等。
实验总结
本次实验让我知道了多线程的作用,并且初步实现了多线程,更加熟练的使用多线程
第九周总结![](https://img2018.cnblogs.com/blog/1580249/201910/1580249-20191025140532357-1798472647.png)
本周主要学习了,线程的几种状态,线程的操作及其方法,Java的IOName()方法设置线程名字,可以允许线程同名,但应该避免这种事情发生,如果没有设置线程名称那么系统会默认设置一个名字为Thread-Xx。
Java中用isAliva()来判断线程是否启动并且还在运行。
Java中可以用join()方法让一个线程强制运行,并且这个期间,其他线程只能等,不能运行。
用Thread.sleep()让线程休眠,用interrupt()方法中断线程用setDaemon()方法让线程在后台运行。
线程的优先级
但并不是线程的优先级越高,就一定会先执行,那个线程先执行还是由CPU来调度。
线程的礼让,可以用yield()方法将一个线程的操作暂时让给其它线程执行,但并不是一定会让,还是由CPU决定。
JavaIO
file类,与文件本身有关的类,可以用它,新建文件,删除文件等操作。
可以用createNewFile()创建文件,但是windows是反斜杠分隔,linux用正斜杠分隔,所以一般用Java提供的两个常量pathSeparator,setparator
用delete()方法删除文件。exists()判断文件是否存在
用mkdir()方法创建文件夹,用public String[] list():列出全部名称,public File listFiles():列出完整路径。
RandomAccessFile类,对文件内容进行操作。