zoukankan      html  css  js  c++  java
  • java多线程数字加减

    /* 设计四个线程对象,其中两个线程执行减操作,另外两个执行加操作.*/
    
    class Resource{
    	private int num = 0;
    	private boolean flag = true;
    	public synchronized void add() throws Exception {
    		if(this.flag == false) {
    			super.wait();
    		}
    		Thread.sleep(100);
    		this.num++;
    		System.out.println("【加法操作 - "+ Thread.currentThread().getName()+"】num="+ num);
    		this.flag = false;
    		super.notifyAll();
    	}
    	public synchronized void sub() throws Exception{
    		if(this.flag == true) {
    			super.wait();
    		}
    		Thread.sleep(200);
    		this.num--;
    		System.out.println("【减法操作- " + Thread.currentThread().getName() + "】num=" + num);
    		this.flag = true;
    		super.notifyAll();
    	}
    }
    
    class AddThread implements Runnable{
    	private Resource resource;
    	public AddThread(Resource resource) {
    		this.resource = resource;
    	}
    	@Override
    	public void run() {
    		for(int x=0;x<50;x++) {
    			try {
    				this.resource.add();
    			}catch(Exception e) {
    				e.printStackTrace();
    			}
    		}
    	}
    }
    
    class SubThread implements Runnable{
    	private Resource resource;
    	public SubThread(Resource resource) {
    		this.resource = resource;
    	}
    	@Override
    	public void run() {
    		for(int x=0;x<50;x++) {
    			try {
    				this.resource.sub();
    			}catch(Exception e) {
    				e.printStackTrace();
    			}
    		}
    	}
    }
    
    public class homework_01 {
    	public static void main(String[] args) {
    		Resource resource = new Resource();
    		SubThread st = new SubThread(resource);
    		AddThread at = new AddThread(resource);
    		new Thread(at, "加法线程-A").start();
    		new Thread(at, "加法线程-B").start();
    		new Thread(st, "加法线程-C").start();
    		new Thread(st, "加法线程-D").start();
    	}
    }
    

      

  • 相关阅读:
    rhel 7.0 配置centos yum源(2016/12/8),成功!
    rosetta2014/2015安装时出现INCLUDE(keyerror)错误,解决。
    显示python已安装模块及路径,添加修改模块搜索路径
    sort
    linux 查看磁盘剩余命令
    cat hesA/Models/score_tgt.sc| awk '{ print $2,$19}' | sort -n -k 1
    Python_sys模块
    Python_os模块
    Python_datetime模块
    Python_time模块
  • 原文地址:https://www.cnblogs.com/sunzhongyu008/p/11150089.html
Copyright © 2011-2022 走看看