zoukankan      html  css  js  c++  java
  • 线程同步两种方式

    package test.access.foreign;
    
    public class Foreign {
    	
    	public static void main(String args[]){
    		MyThread mt=new MyThread();
    		for(int i=0;i<20;i++)//模拟20个售票终端
    		new Thread(mt).start();
    	}
    	/**
    	 * 打印结果:
    	 */
    }
    class MyThread implements Runnable{
    	int tacket=5;
    	@Override
    	public void run() {
    		try {
    			
    				sale();
    			
    		} catch (InterruptedException e) {
    			// TODO Auto-generated catch block
    			e.printStackTrace();
    		}		
    	}
    	private synchronized void sale() throws InterruptedException{
    		long time=(long) (Math.random()*5000);
    		System.out.println("线程"+Thread.currentThread().getName()+"休眠"+time+"毫秒");
    		Thread.sleep(time);//模拟网络延时
    		if(tacket>=1){
    			System.out.println("售票:"+tacket--);
    		}else{
    			System.out.println("没票啦");
    		}
    	}
    }

    方式二:
    package test.access.foreign;
    
    public class Foreign {
    	
    	public static void main(String args[]){
    		MyThread mt=new MyThread();
    		for(int i=0;i<20;i++)//模拟20个售票终端
    		new Thread(mt).start();
    	}
    	/**
    	 * 打印结果:
    	 */
    }
    class MyThread implements Runnable{
    	int tacket=5;
    	@Override
    	public void run() {
    		try {
    			synchronized(this){
    				long time=(long) (Math.random()*5000);
    				System.out.println("线程"+Thread.currentThread().getName()+"休眠"+time+"毫秒");
    				Thread.sleep(time);//模拟网络延时
    				if(tacket>=1){
    					System.out.println("售票:"+tacket--);
    				}else{
    					System.out.println("没票啦");
    				}
    			}
    		} catch (InterruptedException e) {
    			// TODO Auto-generated catch block
    			e.printStackTrace();
    		}		
    	}
    }

  • 相关阅读:
    为什么和什么是 DevOps?
    使用jmeter 上传文件
    jmeter 获取执行脚本的路径
    随笔(九)
    随笔(八)
    随笔(七)
    随笔(六)
    随笔(五)
    随笔(四)
    随笔(三)
  • 原文地址:https://www.cnblogs.com/mfmdaoyou/p/6893112.html
Copyright © 2011-2022 走看看