`
BabyDuncan
  • 浏览: 585645 次
  • 性别: 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用线程的两种实现方式设计四个线程两次对J加1两次对J减1

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

    C#面试题 包括 ADO.net 多线程等

    C#面试题 包括 ADO.net 多线程等 C#面试题 包括 ADO.net 多线程等 C#面试题 包括 ADO.net 多线程等 C#面试题 包括 ADO.net 多线程等 C#面试题 包括 ADO.net 多线程等

    java常见面试题(史上最全最经典-希望对你有用)

    在这里,我们总结了Java常见的面试题,涵盖了Java的基础部分,包括基本语法、类相关的语法、内部类的语法、继承相关的语法、异常的语法、线程的语法、集合的语法、IO的语法、虚拟机方面的语法等。 1. Java基础部分 ...

    linux中一个程序的两个线程的同步(c语言实现)

    在本实验中,我们将创建两个线程,一个负责加一,另一个负责输出。两个线程共享同一个变量 a,並使用信号灯实现同步。 首先,我们创建了一个共享缓冲区,并将其初始化为指定的大小。然后,我们创建了一个信号灯集,...

    常见面试算法题目

    1. 1 - 100, 找出质数 2. 冒泡排序 3. 1~100共一百个自然数,...6. 设计4个线程,其中两个线程每次对j增加1,另外两个线程每次对j减少1 7. 给你List A,已知,如 3,1,4,9,5```````100. 让你求出里面的最大值与最小值。

    c++笔试面试之网络和多线程

    在C++笔试面试中,网络和多线程是两个经常被提及的重要知识点。本篇文档详细列举了关于网络部分的面试题目,同时也涉及了与多线程相关的TCP/IP协议栈的建立和断开过程。以下为详细的知识点总结: 1. TCP服务创建...

    实现多线程同步问题--一个线程自加一个线程显示

    面试的时候碰到的一个问题,实现多线程对一个全局数的自加,另外一个线程当全局数自加1以后立马显示这个数的现值。

    j的多线程加减.zip

    本项目涉及的是一个基础的多线程同步问题,标题"j的多线程加减.zip"揭示了我们需要创建四个线程,两个用于递增变量`j`,另两个用于递减`j`。描述中指出,我们需要编写相应的Java程序来实现这个功能。这个简单的任务...

    操作系统面试常见题.pdf

    操作系统面试常见题涵盖了操作系统的基本概念、进程管理、线程管理、同步和异步、阻塞和非阻塞等等。 进程和线程 在操作系统中,进程和线程是两个非常重要的概念。进程是系统进行资源分配和调度的一个独立单位,是...

    java常见面试题合集

    以下是一些基于“java常见面试题合集”的相关知识点: 1. **基础语法**: - 类与对象:理解类的定义、对象的创建与访问权限。 - 继承与多态:掌握单一继承和接口的多实现,以及方法的重写和重载。 - 封装与抽象...

    linux kernel常见面试题及部分答案.pdf

    Linux内核的面试题涉及多方面知识,下面将详细介绍涉及的几个主题。 一、进程管理 在Linux系统中,进程是系统进行资源分配和调度的一个独立单位。每个进程都会被分配一个唯一的进程标识符(PID)。进程管理部分的...

    嵌入式软件开发常见面试题

    1. 多线程编程中,当多个线程访问同一个变量时,如果其中一个线程修改了该变量的值,其他线程必须立即注意到这个变化。例如,一个线程用于更新计数器,而另一个线程负责读取计数器的值。不使用volatile,编译器可能...

    115个Java面试题和答案

    常见java面试题,集合,线程,面向对象,垃圾回收等 常见java面试题,集合,线程,面向对象,垃圾回收等 常见java面试题,集合,线程,面向对象,垃圾回收等 常见java面试题,集合,线程,面向对象,垃圾回收等

    java常见的面试编程题

    在Java面试中,编程题是评估候选人技术能力的重要环节。本压缩包文件包含了一系列常见的Java编程题目,旨在帮助学习者巩固基础,提高解决问题的能力。 1. **冒泡排序**:冒泡排序是最基础的排序算法之一,通过不断...

    史上最全60道多线程面试题答案

    多线程并发编程是Java编程中重要的一块内容,也是面试重点覆盖区域。所以,学好多线程并发编程对Java程序员来来说极其重要的。

    多线程面试59题(含答案)_.zip

    在Java编程领域,多线程是面试中不可或缺的一部分,它涉及到程序的并发执行、资源管理以及性能优化等多个关键点。本资料"多线程面试59题(含答案)_"显然是一个针对Java开发者,尤其是准备面试者的绝佳学习资源。这...

    答复: 一道经典线程面试题的4种解法

    这可能涉及到一个常见的面试题——打印交替的数字序列,比如线程A打印奇数,线程B打印偶数,而这两个线程需要协调工作,确保交替进行。 为了实现这样的功能,开发者可能会使用`synchronized`关键字控制共享资源的...

    一个多线程示例程序及多线程常见问题介绍

    2. **死锁**:两个或多个线程相互等待对方释放资源,导致所有线程都无法继续。预防死锁的关键在于避免循环等待。 3. **资源饥饿**:如果某些线程持续占用资源,其他线程可能无法获取到所需资源,从而导致性能下降。...

    程序创建两个线程,第一个线程没有消息队列,主线程尝试给第一个

    程序创建两个线程,第一个线程没有消息队列,主线程尝试给第一个线程发送一个消息,我们可以看到PostThreadMessage()返回FALSE,程序创建的第二个线程有一个消息队列,主线程中的PostThreadMessage()返回TRUE,程序...

Global site tag (gtag.js) - Google Analytics