实验任务详情:
完成火车站售票程序的模拟。
要求:
(1)总票数1000张;
(2)10个窗口同时开始卖票;
(3)卖票过程延时1秒钟;
(4)不能出现一票多卖或卖出负数号票的情况。
package java7;
class Mythread implements Runnable {
private int ticket=1000;
public void run() {
for(int i=0;i<10000;i++)
{
synchronized(this) {
if(ticket>0) {
try {
Thread.sleep(1000);
}catch(InterruptedException e) {
e.printStackTrace();
}
System.out.println(Thread.currentThread().getName()+"售票:ticket"+ticket--);
}
}
}
}
}
package java7;
public class test {
public static void main(String[] args) {
Mythread my=new Mythread();
Thread t1=new Thread(my,"窗口1");
Thread t2=new Thread(my,"窗口2");
Thread t3=new Thread(my,"窗口3");
Thread t4=new Thread(my,"窗口4");
Thread t5=new Thread(my,"窗口5");
Thread t6=new Thread(my,"窗口6");
Thread t7=new Thread(my,"窗口7");
Thread t8=new Thread(my,"窗口8");
Thread t9=new Thread(my,"窗口9");
Thread t10=new Thread(my,"窗口10");
t1.start();
t2.start();
t3.start();
t4.start();
t5.start();
t6.start();
t7.start();
t8.start();
t9.start();
t10.start();
}
}
学习总结:
IO相关 ——输入/输出 流指(数据流动)
1.流的种类:字节流,字符流,数据流,网络流,对象流,
2.什么叫文件:一种电脑的存储方式,文件有不同的格式如:.txt, .doc, .ppt, .mp4, .jpg, .java
文件夹不算文件
3.File类是与电脑电脑上文件或文件夹产生一一对应映射
File是一个类,在Java.io包中,可以表示文件或目录路径名的抽象表示形式
File与真实硬盘上的文件或文件夹不是一个东西,File是在内存中的一个对象
#### 注意:硬盘上的文件名字是不区分大小写的,内存中File对象变量名区分大小写
4.File常用方法
获取File路径和检测状态:
1)操作File路径和名称:
File getAbsoluteFile() :获取绝对路径
String getAbsolutePath():获取绝对路径
String getPath() :获取文件路径
String getName() :获取文件名称
File getParentFile():获取上级目录文件
String getParent() :获取上级目录路径
2)检测File状态的方法:
boolean canExecute() :判断是否是可执行文件
boolean canRead() :判断该文件是否可读
boolean canWrite():判断该文件是否可写
boolean isHidden():判断该文件是否是隐藏文件
long lastModified():判断该文件的最后修改时间
long length():获取该文件的长度大小(单位字节)
File类中方法-
1)文件操作:
boolean isFile() :是否是文件
boolean createNewFile() :创建新的文件
static File createTempFile(String prefix, String suffix) :创建临时文件
boolean delete() :删除文件
void deleteOnExit() :在JVM停止时删除文件
boolean exists():判断文件是否存在
boolean renameTo(File dest) :重新修改名称
2)目录操作
boolean isDirectory() :判断是否是目录
boolean mkdir() :创建当前目录
boolean mkdirs() :创建当前目录和上级目录
String[] list() :列出所有的文件名
File[] listFiles() :列出所有文件对象
static File[] listRoots() :列出系统盘符
5.使用RandomAccessFile
实现从指定位置读取文件的功能
实现向文件中追加内容的功能
实现向文件指定位置插入内容的功能
6继承Thread类
多线程的定义语法:
class 类名称 extends Thread{
属性;
方法;
public void run(){
线程主体;
}
通过Runnable接口实现多线程:
class 类名称 implements Runnable{
属性;
方法;
}