`
kidiaoer
  • 浏览: 818641 次
  • 性别: Icon_minigender_1
  • 来自: 深圳
文章分类
社区版块
存档分类
最新评论

设计四条线程 一个对j加1一个对j减1

阅读更多
public class ThreadTest1 {

	private int j;

	public static void main(String args[]) {
		ThreadTest1 tt = new ThreadTest1();
		Inc inc = tt.new Inc();
		Dec dec = tt.new Dec();
		for (int i = 0; i < 2; i++) {
			Thread t = new Thread(inc);
			t.start();
			t = new Thread(dec);
			t.start();
		}
	}

	private synchronized void inc() {
		j++;
		System.out.println(Thread.currentThread().getName() + "-inc:" + j);
	}

	private synchronized void dec() {
		j--;
		System.out.println(Thread.currentThread().getName() + "-dec:" + j);
	}

	class Inc implements Runnable {
		public void run() {
			for (int i = 0; i < 100; i++) {
				inc();
			}
		}
	}

	class Dec implements Runnable {
		public void run() {
			for (int i = 0; i < 100; i++) {
				dec();
			}
		}
	}

}
分享到:
评论

相关推荐

    java用线程的两种实现方式设计四个线程两次对J加1两次对J减1

    Java 语言提供了多种方式来实现多线程编程,今天我们将讨论其中的两种实现方式,并使用四个线程来演示对变量 J 的加一和减一操作。 实现方式一:通过继承 Thread 类 在 Java 中,我们可以通过继承 Thread 类来创建...

    Python-Jumpy是ND4J的Python接口用于JVM的NumpyArray封装

    Python-Jumpy是一个专门为数据科学家和机器学习工程师设计的库,它是ND4J库的一个Python接口。ND4J(Number Data for Java)是一个高性能的数值计算库,它在Java虚拟机(JVM)上运行,提供了丰富的数学运算功能,...

    java面试题.doc

    Java 多线程编程,例如写四个线程,二个加 1,二个对一个变量减一,输出。 6. JDBC 编程 使用 JDBC 连接 Oracle 数据库,实现数据查询。 7. 大数据量下的分页解决方法 解决方法有截取 ID 方法和三层嵌套方法等。...

    java自加和自减运算过程

    - 类似于`j`的计算,但有一个前置自增`++k`。 - `k++`先执行,`k`保持为0,返回0给表达式,然后`k`变为1。 - 再次`k++`,`k`保持为1,返回1给表达式,然后`k`变为2。 - 第三次`k++`,`k`保持为2,返回2给表达式...

    Java并发编程与高并发解决方案之并发容器(J.U.C).docx

    - 需要一个线程安全的映射类型容器,并且对性能有较高要求。 ##### 5. ConcurrentSkipListMap `ConcurrentSkipListMap`是一个非阻塞的线程安全的SortedMap实现。与`ConcurrentSkipListSet`类似,它也使用跳表作为...

    Java多线程编程之访问共享对象和数据的方法

    这样,当多个线程调用这些方法时,它们会自动按照线程同步规则进行,确保了在任何时候只有一个线程能修改`j`的值。 - **方法二**:创建一个外部类,将`Runnable`对象作为其内部类,共享数据作为外部类的成员变量...

    《面向对象程序设计JAVA语言程序设计》期末考试试题及部分答案.doc

    - **解析**:`j-i`的结果是8,满足第一个`case`条件,`k`加1,之后进入下一个`case`,`k`再加2,接着再加3,此时`k`为36。最后执行`default`分支,`k`除以`j`(即18),结果为2。但是题目要求的是最终的`k`值,即36...

    进程同步模拟设计--生产者和消费者问题

    总结来说,进程同步模拟设计——生产者和消费者问题是一个典型的多线程同步问题,通过使用信号量等同步机制,我们可以实现并发进程间的有效协作,保证数据的一致性和系统的正常运行。在实际编程中,理解并熟练运用...

    深入浅出_Java并发工具包原理讲解

    1. 原子操作:原子操作是并发编程中的基础,它能够保证线程安全的进行加减操作或其他简单的计算。Java中提供了Atomic类来支持原子操作,例如AtomicInteger可以保证整数的原子操作。除了AtomicInteger之外,还有数组...

    VC6.0 矩阵运算

    以下将详细介绍如何在VC6.0中实现矩阵的加、减、乘、转置和数乘运算。 1. **矩阵的表示**: 在C++中,矩阵可以被表示为二维数组。例如,一个2x2的矩阵A可以声明为`int A[2][2]`。这种表示方法简单直观,易于操作,...

    Java机试相关题目34题

    本题目要求设计四个线程,其中两个线程用于增加一个全局变量j的值,另外两个用于减少j的值。需要注意线程安全问题,确保操作的原子性和同步。 13. 大数据量分页处理:在处理大数据量时,为了提高效率,通常会采用...

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

    在实现中,assertion就是在程序中的一条语句,它对一个boolean表达式进行检查,一个正确程序必须保证这个boolean表达式的值为true;如果该值为false,说明程序已经处于不正确的状态下,系统将给出警告或退出。...

    中科软JAVA面试题

    #### 三十五、设计4个线程,两个线程每次对j增加1,另外两个线程对j每次减少1 ```java public class Counter { private volatile int j = 0; public void increment() { synchronized(this) { j++; } } ...

    2021-2022计算机二级等级考试试题及答案No.12970.docx

    23. 条件判断:给定的if语句中,i-1(7)不大于j(16),所以执行else部分,j减一,但i不变,因此i的值仍为8。 24. 数据类型:67890是长整型数据,因为它超过了标准整型的最大值。 25. 数据类型:在数据库中,...

    我找工作复习的笔试题目及知识

    11. 二进制计数:计算一个数的二进制表示中1的个数,可以通过逐位与自身减1的数进行按位与运算,每次操作都会将最右边的一个1变为0,计数器加1,直至全0。 12. 字符串复制函数`strcpy`:`strcpy`用于复制字符串,它...

    矩阵常用的运算

    在VB中,可以创建一个新的矩阵,并将原矩阵的元素按位置交换,`For i = 0 To 行数 - 1` `For j = 0 To i - 1` `temp = 矩阵(i, j)` `矩阵(i, j) = 矩阵(j, i)` `矩阵(j, i) = temp` `Next j` `Next i`。 5. **矩阵...

    2015年9月未来教育计算机四级网络工程师题库及参考答案

    - 当一个进程中的一个线程处于运行状态,而其他线程分别处于就绪和阻塞状态时,整个进程的状态可以被认为是**运行状态**(选项A)。因为至少有一个线程在运行,所以整个进程也认为是在运行中。 8. **Fork函数示例...

    Some-do-with-java-games.rar_24点_24点java_do with java_games_吃豆子 j

    "24点"是一款数学智力游戏,目标是通过加、减、乘、除运算将四张牌的数值组合成24。"24点java"则表明这个游戏已经被开发者用Java实现。"do_with_java"可能是一个项目或活动的标签,强调了这些游戏都是用Java编程语言...

    Java se 面试题.docx

    单例设计模式是一种创建型设计模式,确保一个类只有一个实例,并提供一个全局访问点。这在资源管理、缓存、线程池等场景中非常常见。 **实现要点**: 1. **构造器私有化**:防止其他类实例化单例对象。 2. **静态...

Global site tag (gtag.js) - Google Analytics