完成火车站售票程序的模拟。
要求:
(1)总票数1000张;
(2)10个窗口同时开始卖票;
(3)卖票过程延时1秒钟;
(4)不能出现一票多卖或卖出负数号票的情况。
package Lemon;
class Tickets implements Runnable {
private int ticket = 1000;
public void run(){
try{
Thread.currentThread();
Thread.sleep(1000);
}catch(InterruptedException e){
e.printStackTrace();
}
synchronized (this){
while(true){
if(ticket>0){
System.out.println(Thread.currentThread().getName()+"卖出"+ticket+"张票");
ticket --;
}else{
System.out.println(Thread.currentThread().getName()+"票已卖完");
break;
}
}
}
}
}
package Lemon;
public class Test {
public static void main(String[] args) {
Tickets ti = new Tickets();
for(int i = 1;i<=10;i++){
if(i<=9){
new Thread(ti,"窗口00"+i).start();
}else{
new Thread(ti,"窗口010").start();
}
}
}
}
课程总结
1.线程状态
2.线程操作方法
getName()取得线程名称
setName()设置线程名称(若没有设置线程名称,系统会自动设置名称,因系统中必然存在一个static属性,自动用于为线程自动命名)
isAlive()测试线程是否已经启动而且仍在运行
join()强制线程运行
Thread.sleep()使线程进行暂时的休眠
interrupt()中断线程运行
可以使用setPriority()设置线程的优先级
yield()将一个线程的操作暂时让给其他线程运行
3.File
学习了File类中的主要方法
使用createNewFile()创建一个新文件
delete()进行删除文件操作
mkdir()创建一个文件夹
列出指定目录中的全部文件public String[] list():列出全部名称,返回一个字符串数组,public File[] listFiles():列出完整的路径,返回一个File对象数组
listFiles()列出一个文件完整的路径
isDirectory判定给定的一个路径是否是目录
任重道远