`

4线程,2个对i加,2个对i减

 
阅读更多
package test1;


/**
 * 设计4个线程,其中2个线程,每次对i加1,另外两个线程,每次对i减一
 * 
 * @author Administrator
 *
 */
public class Thread2 {
	public static void main(String[] args) {
		ShareData d = new ShareData();
		for (int i = 0; i < 2; i++) {
			new Thread(new Runnable1(d)).start();
			new Thread(new Runnable2(d)).start();
		}
	}
}

/**
 * 加
 * @author Administrator
 *
 */
class Runnable1 implements Runnable {
	private ShareData d;
	public Runnable1 (ShareData d) {
		this.d = d;
	}
	
	@Override
	public void run() {
		d.increment();
	}
}

/**
 * 减
 * @author Administrator
 *
 */
class Runnable2 implements Runnable {
	private ShareData d;
	public Runnable2 (ShareData d) {
		this.d = d;
	}
	
	@Override
	public void run() {
		d.decrement();
	}
}


class ShareData {

	private int i = 0;
	
	public synchronized void increment () {
		i++;
		System.out.println("加后i为:" + i);
	}
	
	public synchronized void decrement () {
		i--;
		System.out.println("减后i为:" + i);
	}
}

 

 

 

分享到:
评论

相关推荐

    用多线程做自动机程序

    //终止三个辅助线程 g_MotionMsg.MoveState = 0; //停止状态 g_MotionMsg.MoveMode = 0; //自然模式 // g_MotionMsg.AddTime = CurTime; //附加上以前加工的时间 if( !b...

    OS 操作系统 进程 线程 文件 设备 C# 多用户 登陆 课程设计 报告 算法 FCFS

    i减1 !??; end; 第一个?为A,B,C中某个设备,第二个?为一位数,表示使用设备的时间(由于没有 实际设备,所以无法知道设备何时工作完成,所以假定一个数,这个数随着系统时间 增加而递减,减到0时,认为是...

    Java2核心技术.part5

    Java2核心技术第I卷.基础知识 目录: 译者序 前言 第1章Java程序设计概述 1.1 Java程序设计平台 1.2 Java“白皮书”的关键术语 1.2.1简单性 1.2.2面向对象 1.2. 3分布式 1. 2.4健壮性 1. 2.5安仝...

    一个进程池的服务器程序

    当父进程发现请求数 &gt;= 子进程数时,父进程创建新的子进程,并把子进程数加1(当然子进程数有个预先上限);当父进程发现子进程数大于请求数加1时,父进程杀死多余的子进程。 总的来说,思想是让子进程accept并处理...

    消费者生产者模型 c++

    //定义一个结构,记录在测试文件中指定的每一个线程的参数 struct ThreadInfo { int serial; //线程序列号 char entity; //是P还是C double delay; //线程延迟 int thread_request[MAX_THREAD_NUM]; //线程请求...

    宋劲彬的嵌入式C语言一站式编程

    3. 整数的加减运算 3.1. Sign and Magnitude表示法 3.2. 1's Complement表示法 3.3. 2's Complement表示法 3.4. 有符号数和无符号数 4. 浮点数 15. 数据类型详解 1. 整型 2. 浮点型 3. 类型转换 3.1. Integer ...

    Java2核心技术.part4

    Java2核心技术第I卷.基础知识 目录: 译者序 前言 第1章Java程序设计概述 1.1 Java程序设计平台 1.2 Java“白皮书”的关键术语 1.2.1简单性 1.2.2面向对象 1.2. 3分布式 1. 2.4健壮性 1. 2.5安仝...

    c++ 面试题 总结

    1.是不是一个父类写了一个virtual 函数,如果子类覆盖它的函数不加virtual ,也能实现多态? virtual修饰符会被隐形继承的。 private 也被集成,只事派生类没有访问权限而已 virtual可加可不加 子类的空间里有父类...

    Java入门1·2·3:一个老鸟的Java学习心得.PART3(共3个)

    11.3.6 理解4个访问控制符 304 11.3.7 访问控制符可见性汇总 306 11.3.8 访问控制符带来的覆盖问题 306 11.3.9 final:不允许方法被覆盖 310 11.3.10 重温静态方法 311 11.3.11 静态方法——类范围里的概念 312...

    java 面试题 总结

    28、设计4个线程,其中两个线程每次对j增加1,另外两个线程对j每次减少1。写出程序。 以下程序使用内部类实现线程,对j增减的时候没有考虑顺序问题。 public class ThreadTest1{ private int j; public static ...

    超级有影响力霸气的Java面试题大全文档

    与cgi的区别在于servlet处于服务器进程中,它通过多线程方式运行其service方法,一个实例可以服务于多个请求,并且其实例一般不会销毁,而CGI对每个请求都产生新的进程,服务完成后就销毁,所以效率上低于servlet。...

    Java2核心技术.part2

    Java2核心技术第I卷.基础知识 目录: 译者序 前言 第1章Java程序设计概述 1.1 Java程序设计平台 1.2 Java“白皮书”的关键术语 1.2.1简单性 1.2.2面向对象 1.2. 3分布式 1. 2.4健壮性 1. 2.5安仝...

    Java2核心技术.part3

    Java2核心技术第I卷.基础知识 目录: 译者序 前言 第1章Java程序设计概述 1.1 Java程序设计平台 1.2 Java“白皮书”的关键术语 1.2.1简单性 1.2.2面向对象 1.2. 3分布式 1. 2.4健壮性 1. 2.5安仝...

    Java2核心技术.part1

    Java2核心技术第I卷.基础知识 目录: 译者序 前言 第1章Java程序设计概述 1.1 Java程序设计平台 1.2 Java“白皮书”的关键术语 1.2.1简单性 1.2.2面向对象 1.2. 3分布式 1. 2.4健壮性 1. 2.5安仝性 1. 2.6...

    Java2核心技术.part6

    Java2核心技术第I卷.基础知识 目录: 译者序 前言 第1章Java程序设计概述 1.1 Java程序设计平台 1.2 Java“白皮书”的关键术语 1.2.1简单性 1.2.2面向对象 1.2. 3分布式 1. 2.4健壮性 1. 2.5安仝...

    计算机原理与设计:Verilog HDL版 李亚民著

    异步通信接口UART、PS/2键盘与鼠标接口、视频图像阵列VGA接口、I2C串行总线接口和PCI并行总线接口的Verilog HDL设计;高性能计算机及互联网络设计。书中的Verilog HDL源代码基本上都附有功能仿真波形,以便加深对...

    java基础入门教程

    因 此 ,Java的 诞 生 必 将 对 整 个 计 算 机 产 业 发 生 深远的 影 响,对 传 统 的 计 算 模型 提 出 了 新 的 挑 战 。 SUN MicroSystem 公 司 的 总 裁 Scott McNealy认 为 Java为 Internet和WWW开辟 了 一 ...

Global site tag (gtag.js) - Google Analytics