zoukankan      html  css  js  c++  java
  • Thread和Runnable

    继承Thread类不能实现资源共享。(程序启动了三个线程,但是3个线程却分别卖了各自的5张票,并没有达到资源共享的目的)
    实现Runnable接口可以资源共享。(程序启动了三个线程,但是3个线程一共才卖了5张票,即ticket属性被所有的线程对象共享)

    问题:
    设计 4 个线程,其中两个线程每次对 j 增加 1,另外两个线程对 j 每次减少 1。写出程序。
    以下程序使用内部类实现线程,对 j 增减的时候没有考虑顺序问题。

    代码:

       public class Test {
        private int j=50;  
        public static void main(String[] args) {
    	Test test = new Test();
    	for(int i=0;i<30;i++){ 
    		 Thread t=new Thread(test.getAdd()); 
    		 t.start(); 
    		 t=new Thread(test.getJian()); 
    		 t.start(); 
    	} 
    }
    
    public Add getAdd() {
    	return new Add();
    }
    
    public Jian getJian() {
    	return new Jian();
    }
    
    public synchronized void add() {
    	j++;
    	System.out.println("加1");
    }
    
    public synchronized void jian() {
    	j--;
    	System.out.println("减一");
    }
    
    class Add implements Runnable{
    		public void run() {
    			add();
    		}
    }
    
    class Jian implements Runnable{
    	public void run() {
    		jian();
    	}
    }
    

    }

    部分效果:

  • 相关阅读:
    Swift # Apple Pay集成
    GitHub Top 100 简介
    一些常用算法
    CocoaPods 建立私有仓库
    安装 CocoaPods & Alcatraz
    iOS程序 # 启动过程
    Apache & WebDav 配置(二)
    SVN & Git (二)
    SVN & Git (一)
    poj 3169 Layout (差分约束)
  • 原文地址:https://www.cnblogs.com/miniSimple/p/12266906.html
Copyright © 2011-2022 走看看