第九周课程总结&实验报告
实验任务详情:
完成火车站售票程序的模拟。
要求:
(1)总票数1000张;
(2)10个窗口同时开始卖票;
(3)卖票过程延时1秒钟;
(4)不能出现一票多卖或卖出负数号票的情况。
实验源码
package 实验七;
class MyThread implements Runnable{
private int ticket = 1000;
public void run() {
for(int i = 0; i <=999; i++) {
this.sale();
if(i == Math.sqrt(i) * Math.sqrt(i)) {
Thread.currentThread().yield();
}
}
}
public synchronized void sale() {
if(ticket > 0) {
try {
Thread.currentThread().sleep(1000);
}catch(InterruptedException e) {
e.printStackTrace();
}
System.out.println(Thread.currentThread().getName()+"售票:ticket = " + ticket --);
}
}
}
package 实验七;
public class first {
public static void main (String args[]) {
MyThread my = new MyThread();
for(int i = 1; i <= 10; i++) {
new Thread(my,"窗口"+ I ).start();
}
}
}
实验结果
第九周总结
10月21日
要想实现多线程,必须在主线程中创建新的线程对象。线程一般具有五种状态,即创建,就绪,运行,阻塞,终止。
1创建状态
新建一个线程对象可采用Thread类的构造方法实现。
2就绪状态
新建线程对象后,调用该线程的start()方法就可以启动线程。当线程启动时,线程进入就绪状态。此时,线程将进入线程队列排队,
等待CPU服务,这就表明它已经具备了运行条件。
3运行状态
当就绪状态的线程被调用并获得处理器资源时,线程就进入了运行状态。run()方法定义了该线程的操作和功能。
4堵塞状态
5死亡状态。
线程调用stop()方法时或run()方法执行结束后,即处于死亡状态。处于死亡状态的线程不具备有继续运行的能力。
10月23日
想要操作D盘下的test文件,则路径必须修改为“d: est.txt”
d:"+File.separator+"test"+File.separator+demo.txt"
public String[] list ():列出全部名称,返回一个字符串数组。
public File[] listFiles():列出完整路径,返回一个File对象数组。