zoukankan      html  css  js  c++  java
  • 第九周学习总结&实验报告七

    实验报告:

    实验任务详情:

    完成火车站售票程序的模拟。

    要求:

    (1)总票数1000张;

    (2)10个窗口同时开始卖票;

    (3)卖票过程延时1秒钟;

    (4)不能出现一票多卖或卖出负数号票的情况。

    实验代码:

    package Java11;
    	class MyThread implements Runnable{
    	        private int ticket = 1000;
    	        
    	        public void run() {
    	            for(int i = 0; i < 1000; i++) {
    	                   this.sale();
    	                   if(i == Math.sqrt(i) * Math.sqrt(i)) {
    	                       Thread.currentThread().yield();
    	                   }
    	                }
    	            }
    	        
    	         public synchronized void sale() {
    	                if(ticket > 0) {
    	                    try {
    	                        Thread.currentThread().sleep(1000);
    	                    }catch(InterruptedException e) {
    	                        e.printStackTrace();
    	                    }
    	                    System.out.println(Thread.currentThread().getName()+"卖票:ticket="+ticket--);
    	                }
    	         }
    	}
    package Java11;
    
    public class 测试类 {
    
    	public static void main (String args[]) {
            MyThread my = new MyThread();
            Thread my1 = new Thread(my);
            my1.setName("窗口1");
            
            Thread my2 = new Thread(my);
            my2.setName("窗口2");
            
            Thread my3 = new Thread(my);
            my3.setName("窗口3");
            
            Thread my4 = new Thread(my);
            my4.setName("窗口4");
            
            Thread my5 = new Thread(my);
            my5.setName("窗口5");
            
            Thread my6 = new Thread(my);
            my6.setName("窗口6");
            
            Thread my7 = new Thread(my);
            my7.setName("窗口7");
            
            Thread my8 = new Thread(my);
            my8.setName("窗口8");
            
            Thread my9 = new Thread(my);
            my9.setName("窗口9");
            
            Thread my10 = new Thread(my);
            my10.setName("窗口10");
            
            my1.start();
            my2.start();
            my3.start();
            my4.start();
            my5.start();
            my6.start();
            my7.start();
            my8.start();
            my9.start();
            my10.start();
             
        }
    }
    


    进程与线程

    进程是程序的一次动态执行过程,它经历了从代码加载、执行到执行完毕的一个完整过程,

    多线程是实现并发机制的一种有效手段。进程和线程一样,都是实现并发的一个基本单位。

    启动线程:

    线程的主要代码是在run方法里写的,但是启动的时候是调用Thread的start方法启动。

    线程的状态

    要想实现多线程,必须在主线程中创建新的线程对象。

    任何线程一般具有五种状态,即创建、就绪、运行、阻塞、终止。

    取得和设置线程名称;

    在Thread类中,可以通过getName()方法取得线程的

    名称,通过setName()方法设置线程的名称。

    线程的名称一般在启动线程前设置,但也允许为已经运行的线程设置名称。

    允许两个Thread对象有相同的名字,但为了清晰,应该尽量避免这种情况的发生。

    另外,如果程序并没有为线程指定名称,则系统会自动的为线程分配-一个名称。

    同步代码块

    在代码块上加上“synchronized"关键字的话,则此代码块就称为同步代码块。

    代码块格式:

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

  • 相关阅读:
    变量与常量
    .面向过程和面向对象的区别
    .JDK,JRE,JVM三者关系
    DEV C++, 利用链表实现目录内所有文件列表显示
    swith的用法和注意事项?
    Java排序(一)实现类的排序
    C++数据结构——树(基础知识篇)
    杀进程
    监控 monitor java 代码
    putty 直接连 快捷键方式
  • 原文地址:https://www.cnblogs.com/tengziqiang/p/11737914.html
Copyright © 2011-2022 走看看