第九周课程总结及实验报告7


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

package Zuoye7;
class MyThread implements Runnable{
 private int ticket=1000;
    public void run() { 
    	for(int i=0;i<1001;i++) {
    		this.sales();
    	}
    }
     public  synchronized void sales() {                          
                if(ticket>0) {                                  
                    try {
                        Thread.sleep(1000);
                    }
                    catch(InterruptedException e) {
                        e.printStackTrace();
                    }
                    System.out.println(Thread.currentThread().getName()+"售票:"+ticket--);    
                }
            }
        };
public class Ticket {
    public static void main(String[] args) {
        MyThread mt1=new MyThread();
        new Thread(mt1,"窗口1").start();
        new Thread(mt1,"窗口2").start();
        new Thread(mt1,"窗口3").start();
        new Thread(mt1,"窗口4").start();
        new Thread(mt1,"窗口5").start();
        new Thread(mt1,"窗口6").start();
        new Thread(mt1,"窗口7").start();
        new Thread(mt1,"窗口8").start();
        new Thread(mt1,"窗口9").start();
        new Thread(mt1,"窗口10").start();
    }
}

学习总结
线程的状态
(1)取得和设置线程名称
通过getName和setName;
如果没有设置名字,系统会为其自动分配名称,格式Thread-Xx。
名称可能相同,id不可能相同。
Java中所有线程都是同时启动的,所有main线程结束不会对其他线程有影响。
(2)判断线程是否自动启动
使用isAlive()来测试线程是否启动且仍在运行。
是,返回true;否,返回false;
(3)线程的强制运行
采用join()方法,在线程强制运行期间,其他线程无法运行,必须等待此线程完成后才可以继续执行。
(4)线程的休眠、中断
使用Thread.sleep()方法,时间单位ms.
(5)线程的优先级
用setPriority设置。
MAX_PRIORITY 最高优先级
NORM_PRIORITY 中等优先级 (主方法的优先级)
MIN_PRIORITY 最低优先级
(6)线程的礼让
运用yield方法将一个线程的操作暂时让给其他线程执行。
(7)同步代码块

synchronized(同步对象){
需要同步的代码;
}

(8)操作文件的类File
Windows目录的分隔符""
Linux目录的分割符“/"
输入要“";
(9)列出指定目录的全部文件

public String[] list(): 列出全部名称,返回一个字符串数组。
public File[] listFiles():列出完整路径,返回一个File对象数组。

判断一个给定路径是否为目录
运用isDirectory()方法判断。

原文地址:https://www.cnblogs.com/1211li/p/11729397.html