第九周学习总结&实验总结

一、火车站售票程序模拟

   (1)总票数1000张;
   (2)10个窗口同时开始买票;
   (3)买票过程中延时一秒;
   (4)不能出现一票多卖或卖出负数号票的情况;

实验源码:

package Orange;

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(Exception e){
					e.printStackTrace();
				}
				System.out.println(Thread.currentThread().getName()+"卖票一张;ticket="+ticket--);
			}
		}
	  }
	}	
}
public class Saleticket {
       public static void main(String args[]) {
    	   MyThread my = new MyThread();
    	   Thread s1=new Thread(my,"窗口1");
    	   Thread s2=new Thread(my,"窗口2");
    	   Thread s3=new Thread(my,"窗口3");
    	   Thread s4=new Thread(my,"窗口4");
    	   Thread s5=new Thread(my,"窗口5");
    	   Thread s6=new Thread(my,"窗口6");
    	   Thread s7=new Thread(my,"窗口7");
    	   Thread s8=new Thread(my,"窗口8");
    	   Thread s9=new Thread(my,"窗口9");
    	   Thread s10=new Thread(my,"窗口10");
    	          s1.start();
    	          s2.start();
    	          s3.start();
    	          s4.start();
    	          s5.start();
    	          s6.start();
    	          s7.start();
    	          s8.start();
    	          s9.start();
    	          s10.start();
       }
}

运行结果:

二、总结

多线程

1、继承Thread类

class 类名称 extends Thread{         //继承Thread类
       属性···;                                   //定义属性
       方法···;                                   //定义方法
       public void run(){
                 线程主体;                     //覆写Thread类中的ru()方法,此方法是线程的主体
       }
}

2、由于线程的运行需要本机操作系统支持,所以启动多线程时必须通过start()方法启动,而不能直接调用run()方法。
3、实现Runnable接口

class 类名称 implements Runnable{
	属性···;
	方法···;
	public void run(){   //覆写Runnable接口中的run()方法
		线程主体;
	}
}

4、继承Thread类与Runnable接口的区别
1)继承Thread类不能资源共享,而Runnable接口可以。

原文地址:https://www.cnblogs.com/chixue/p/11734400.html