这个题太常见了,但是要自己独立的默写出来也不是很容易的哦!
代码:
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 的加一和减一操作。 实现方式一:通过继承 Thread 类 在 Java 中,我们可以通过继承 Thread 类来创建...
C#面试题 包括 ADO.net 多线程等 C#面试题 包括 ADO.net 多线程等 C#面试题 包括 ADO.net 多线程等 C#面试题 包括 ADO.net 多线程等 C#面试题 包括 ADO.net 多线程等
在这里,我们总结了Java常见的面试题,涵盖了Java的基础部分,包括基本语法、类相关的语法、内部类的语法、继承相关的语法、异常的语法、线程的语法、集合的语法、IO的语法、虚拟机方面的语法等。 1. Java基础部分 ...
在本实验中,我们将创建两个线程,一个负责加一,另一个负责输出。两个线程共享同一个变量 a,並使用信号灯实现同步。 首先,我们创建了一个共享缓冲区,并将其初始化为指定的大小。然后,我们创建了一个信号灯集,...
1. 1 - 100, 找出质数 2. 冒泡排序 3. 1~100共一百个自然数,...6. 设计4个线程,其中两个线程每次对j增加1,另外两个线程每次对j减少1 7. 给你List A,已知,如 3,1,4,9,5```````100. 让你求出里面的最大值与最小值。
在C++笔试面试中,网络和多线程是两个经常被提及的重要知识点。本篇文档详细列举了关于网络部分的面试题目,同时也涉及了与多线程相关的TCP/IP协议栈的建立和断开过程。以下为详细的知识点总结: 1. TCP服务创建...
面试的时候碰到的一个问题,实现多线程对一个全局数的自加,另外一个线程当全局数自加1以后立马显示这个数的现值。
本项目涉及的是一个基础的多线程同步问题,标题"j的多线程加减.zip"揭示了我们需要创建四个线程,两个用于递增变量`j`,另两个用于递减`j`。描述中指出,我们需要编写相应的Java程序来实现这个功能。这个简单的任务...
操作系统面试常见题涵盖了操作系统的基本概念、进程管理、线程管理、同步和异步、阻塞和非阻塞等等。 进程和线程 在操作系统中,进程和线程是两个非常重要的概念。进程是系统进行资源分配和调度的一个独立单位,是...
以下是一些基于“java常见面试题合集”的相关知识点: 1. **基础语法**: - 类与对象:理解类的定义、对象的创建与访问权限。 - 继承与多态:掌握单一继承和接口的多实现,以及方法的重写和重载。 - 封装与抽象...
Linux内核的面试题涉及多方面知识,下面将详细介绍涉及的几个主题。 一、进程管理 在Linux系统中,进程是系统进行资源分配和调度的一个独立单位。每个进程都会被分配一个唯一的进程标识符(PID)。进程管理部分的...
用 JAVA 写一个多线程程序,如写四个线程,二个加 1,二个对一个变量减 1,输出。 可以使用 Java 的 Thread 类和 Runnable 接口实现多线程编程。 16. STRING 与 STRINGBUFFER 的区别。 STRING 的长度是不可变的,...
本文档从数据结构与算法、Java基础、JVM、多线程/并发、Linux使用与问题分析排查等多个方面整理了130个面试题,旨在帮助架构师候选人全面复习和准备面试。 数据结构与算法基础是每个软件工程师的基础知识点。在面试...
1. 多线程编程中,当多个线程访问同一个变量时,如果其中一个线程修改了该变量的值,其他线程必须立即注意到这个变化。例如,一个线程用于更新计数器,而另一个线程负责读取计数器的值。不使用volatile,编译器可能...
常见java面试题,集合,线程,面向对象,垃圾回收等 常见java面试题,集合,线程,面向对象,垃圾回收等 常见java面试题,集合,线程,面向对象,垃圾回收等 常见java面试题,集合,线程,面向对象,垃圾回收等
标题"Qt 多线程访问同一个变量"涉及到的是如何在多线程环境下确保对共享资源(此处为一个全局变量)的安全访问。描述中提到了使用互斥锁来解决这个问题,并通过创建两个线程ThreadA和ThreadB来演示这一过程。 首先...
在Java面试中,编程题是评估候选人技术能力的重要环节。本压缩包文件包含了一系列常见的Java编程题目,旨在帮助学习者巩固基础,提高解决问题的能力。 1. **冒泡排序**:冒泡排序是最基础的排序算法之一,通过不断...
多线程并发编程是Java编程中重要的一块内容,也是面试重点覆盖区域。所以,学好多线程并发编程对Java程序员来来说极其重要的。
在Java编程领域,多线程是面试中不可或缺的一部分,它涉及到程序的并发执行、资源管理以及性能优化等多个关键点。本资料"多线程面试59题(含答案)_"显然是一个针对Java开发者,尤其是准备面试者的绝佳学习资源。这...
这可能涉及到一个常见的面试题——打印交替的数字序列,比如线程A打印奇数,线程B打印偶数,而这两个线程需要协调工作,确保交替进行。 为了实现这样的功能,开发者可能会使用`synchronized`关键字控制共享资源的...