Java实验报告(七)及总结
一、实验报告
实验任务详情:
完成火车站售票程序的模拟。
要求:
(1)总票数1000张;
(2)10个窗口同时开始卖票;
(3)卖票过程延时1秒钟;
(4)不能出现一票多卖或卖出负数号票的情况。
class Market implements Runnable { private int ticket; public int getTicket() { return ticket; } void setTicket(int ticket) { this.ticket = ticket; } public void run() { for (int i = 1; i < 100; i++) { synchronized (this) { if (ticket > 0) { try { Thread.sleep(1000); } catch (InterruptedException e) { e.printStackTrace(); } ticket--; System.out.println(Thread.currentThread().getName() + "售票成功;" + "剩余:" + ticket+"张"); } } } } } class seven { public static void main(String[] args){ Thread[] t=new Thread[10]; Market mar=new Market(); mar.setTicket(1000); for(int i=0;i<10;i++){ new Thread(mar,i+1+"号窗口").start(); } } }
二、总结
进程与线程
进程:是执行中一段程序,即一旦程序被载入到内存中并准备执行,它就是一个进程。进程是表示资源分配的的基本概念,又是调度运行的基本单位,是系统中的并发执行的单位。
线程:单个进程中执行中每个任务就是一个线程。线程是进程中执行运算的最小单位。
进程与线程的区别
线程是程序执行的最小单位,而进程是操作系统分配资源的最小单位;
一个进程由一个或多个线程组成,线程是一个进程中代码的不同执行路线;
进程之间相互独立,但同一进程下的各个线程之间共享程序的内存空间(包括代码段,数据集,堆等)及一些进程级的资源(如打开文件和信号等),某进程内的线程在其他进程不可见;
调度和切换:线程上下文切换比进程上下文切换要快得多。