`
BabyDuncan
  • 浏览: 586720 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

最常见的面试机题,涉及四个线程,两个对j加一,两个对j减一。

阅读更多
这个题太常见了,但是要自己独立的默写出来也不是很容易的哦!
代码:
package renrenPratice;

public class testSomeThread {

	/**
	 * @param args
	 */

	int j = 10;

	public static void main(String[] args) {
		// TODO Auto-generated method stub
		testSomeThread tt = new testSomeThread();
		addJ myaddj = tt.new addJ();
		minusJ myminusj = tt.new minusJ();
		for (int m = 0; m < 2; m++) {
			Thread t = new Thread(myaddj);
			t.start();
			t = new Thread(myminusj);
			t.start();
		}
	}

	private synchronized void addj() {
		// TODO Auto-generated method stub
		for (int k = 0; k < 10; k++) {
			++j;
			System.out.println("j++  --> now j is " + j);
		}

	}

	private synchronized void minusj() {
		// TODO Auto-generated method stub
		for (int l = 0; l < 10; l++) {
			--j;
			System.out.println("j--  -->  now j is " + j);
		}
	}

	class addJ implements Runnable {

		@Override
		public void run() {
			// TODO Auto-generated method stub
			addj();
		}
	}

	class minusJ implements Runnable {

		@Override
		public void run() {
			// TODO Auto-generated method stub
			minusj();
		}
	}

}



运行结果:
j++  --> now j is 11
j++  --> now j is 12
j++  --> now j is 13
j++  --> now j is 14
j++  --> now j is 15
j++  --> now j is 16
j++  --> now j is 17
j++  --> now j is 18
j++  --> now j is 19
j++  --> now j is 20
j--  -->  now j is 19
j--  -->  now j is 18
j--  -->  now j is 17
j--  -->  now j is 16
j--  -->  now j is 15
j--  -->  now j is 14
j--  -->  now j is 13
j--  -->  now j is 12
j--  -->  now j is 11
j--  -->  now j is 10
j++  --> now j is 11
j++  --> now j is 12
j++  --> now j is 13
j++  --> now j is 14
j++  --> now j is 15
j++  --> now j is 16
j++  --> now j is 17
j++  --> now j is 18
j++  --> now j is 19
j++  --> now j is 20
j--  -->  now j is 19
j--  -->  now j is 18
j--  -->  now j is 17
j--  -->  now j is 16
j--  -->  now j is 15
j--  -->  now j is 14
j--  -->  now j is 13
j--  -->  now j is 12
j--  -->  now j is 11
j--  -->  now j is 10


看看起来很合理。
分享到:
评论

相关推荐

    Java面试笔试题汇总(精选版)

    - 引用计数:每个对象都有一个引用计数器,当引用增加时计数器加一,当引用移除时计数器减一,当计数器为零时对象被认为是垃圾。 - 可达性分析:从根节点开始,沿着引用链遍历所有可达的对象,未被遍历到的对象被...

    Linux 面试试题

    * prefork 模式:控制进程在最初建立―StartServers‖个子进程后,为了满足 MinSpareServers 设置的需要创建一个进程,等待一秒钟,继续创建两个,再等待一秒钟,继续创建四个……如此按指数级增加创建的进程数,...

    mysql数据库面试题(基础)

    ACID是mysql数据库的事务属性,包括原子性、一致性、隔离性和持久性四个方面。 * 原子性:一个事务必须视为一个不可分割的最小工作单元,整个事务里的操作要么全部执行成功,要么全部失败。 * 一致性:事务总是从一...

    java面试题

    如果多个线程同时访问`HashMap`,并且至少一个线程修改了该映射,那么它必须保持外部同步。 3. **遍历**:`Hashtable`使用`Enumeration`接口进行遍历,而`HashMap`使用`Iterator`接口进行遍历。 4. **初始容量和增长...

    哈哈哈哈,阿里面试总结

    RDB持久化是Redis默认使用的持久化功能,通过创建一个经过压缩的二进制文件,其中包含了服务器在各个数据库中存储的键值对数据等信息。Redis提供了多种创建RDB文件的方法,用户可以使用SAVE命令或者BGSAVE命令手动...

    2021年JAVA秋招心得总结(纯心得无面经).pdf

    招聘流程一般分为笔试和面试两个阶段,部分企业提前批不设笔试环节。面试通常为两轮技术面加上一轮HR或总监的综合面。腾讯技术面试为三轮加一轮,阿里为四轮加一轮,而华为等企业为两轮加一轮。面试中的自我介绍环节...

    C#八皇后解法

    八皇后问题是一个经典的回溯算法问题,它源于19世纪由数学家鲁道夫·路德维希·卡尔·莫里斯·莱昂哈德·欧拉提出,旨在在8×8的棋盘上放置8个皇后,使得任意两个皇后都无法在同一行、同一列或同一斜线上互相攻击。...

Global site tag (gtag.js) - Google Analytics