Java线程面试题:设计四个线程,其中两个线程每次对 j 加 1,另外两个每次对 j 减 1,程序如下。
package thread;
/**
* Java线程面试题
* @author zhongfg
* @date 2015-06-16
*/
public class ThreadInterview2 {
// 定义全局变量
private int j; public static void main(String args[]) { ThreadInterview2 tt = new ThreadInterview2();
// 调用非静态的方法
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();
}
} class Inc implements Runnable {
public void run() {
for (int i = 0; i < 50; i++) {
inc();
}
}
} class Dec implements Runnable {
public void run() {
for (int i = 0; i < 50; i++) {
dec();
}
}
} private synchronized void inc() {
j++;
System.out.println(Thread.currentThread().getName() + "->增加后的值:" + j);
} private synchronized void dec() {
j--;
System.out.println(Thread.currentThread().getName() + "->减后的值:" + j);
}
} 运行结果:
Thread-0->增加后的值:1
Thread-0->增加后的值:2
Thread-0->增加后的值:3
Thread-0->增加后的值:4
Thread-0->增加后的值:5
Thread-0->增加后的值:6
Thread-0->增加后的值:7
Thread-0->增加后的值:8
Thread-0->增加后的值:9
Thread-0->增加后的值:10
Thread-0->增加后的值:11
Thread-0->增加后的值:12
Thread-0->增加后的值:13
Thread-0->增加后的值:14
Thread-0->增加后的值:15
Thread-0->增加后的值:16
Thread-0->增加后的值:17
Thread-0->增加后的值:18
Thread-0->增加后的值:19
Thread-0->增加后的值:20
Thread-0->增加后的值:21
Thread-0->增加后的值:22
Thread-0->增加后的值:23
Thread-0->增加后的值:24
Thread-0->增加后的值:25
Thread-0->增加后的值:26
Thread-0->增加后的值:27
Thread-0->增加后的值:28
Thread-0->增加后的值:29
Thread-0->增加后的值:30
Thread-0->增加后的值:31
Thread-0->增加后的值:32
Thread-0->增加后的值:33
Thread-0->增加后的值:34
Thread-0->增加后的值:35
Thread-0->增加后的值:36
Thread-0->增加后的值:37
Thread-0->增加后的值:38
Thread-0->增加后的值:39
Thread-0->增加后的值:40
Thread-0->增加后的值:41
Thread-0->增加后的值:42
Thread-0->增加后的值:43
Thread-0->增加后的值:44
Thread-0->增加后的值:45
Thread-0->增加后的值:46
Thread-0->增加后的值:47
Thread-0->增加后的值:48
Thread-0->增加后的值:49
Thread-0->增加后的值:50
Thread-1->减后的值:49
Thread-1->减后的值:48
Thread-1->减后的值:47
Thread-1->减后的值:46
Thread-1->减后的值:45
Thread-1->减后的值:44
Thread-1->减后的值:43
Thread-1->减后的值:42
Thread-1->减后的值:41
Thread-1->减后的值:40
Thread-1->减后的值:39
Thread-1->减后的值:38
Thread-1->减后的值:37
Thread-1->减后的值:36
Thread-1->减后的值:35
Thread-1->减后的值:34
Thread-1->减后的值:33
Thread-1->减后的值:32
Thread-1->减后的值:31
Thread-1->减后的值:30
Thread-1->减后的值:29
Thread-1->减后的值:28
Thread-1->减后的值:27
Thread-1->减后的值:26
Thread-1->减后的值:25
Thread-1->减后的值:24
Thread-1->减后的值:23
Thread-1->减后的值:22
Thread-1->减后的值:21
Thread-1->减后的值:20
Thread-1->减后的值:19
Thread-1->减后的值:18
Thread-1->减后的值:17
Thread-1->减后的值:16
Thread-1->减后的值:15
Thread-1->减后的值:14
Thread-1->减后的值:13
Thread-1->减后的值:12
Thread-1->减后的值:11
Thread-1->减后的值:10
Thread-1->减后的值:9
Thread-1->减后的值:8
Thread-1->减后的值:7
Thread-1->减后的值:6
Thread-1->减后的值:5
Thread-1->减后的值:4
Thread-1->减后的值:3
Thread-1->减后的值:2
Thread-1->减后的值:1
Thread-1->减后的值:0
Thread-3->减后的值:-1
Thread-3->减后的值:-2
Thread-3->减后的值:-3
Thread-3->减后的值:-4
Thread-3->减后的值:-5
Thread-3->减后的值:-6
Thread-3->减后的值:-7
Thread-3->减后的值:-8
Thread-3->减后的值:-9
Thread-3->减后的值:-10
Thread-3->减后的值:-11
Thread-3->减后的值:-12
Thread-3->减后的值:-13
Thread-3->减后的值:-14
Thread-3->减后的值:-15
Thread-3->减后的值:-16
Thread-3->减后的值:-17
Thread-3->减后的值:-18
Thread-3->减后的值:-19
Thread-3->减后的值:-20
Thread-3->减后的值:-21
Thread-3->减后的值:-22
Thread-3->减后的值:-23
Thread-3->减后的值:-24
Thread-3->减后的值:-25
Thread-3->减后的值:-26
Thread-3->减后的值:-27
Thread-3->减后的值:-28
Thread-3->减后的值:-29
Thread-3->减后的值:-30
Thread-3->减后的值:-31
Thread-3->减后的值:-32
Thread-3->减后的值:-33
Thread-3->减后的值:-34
Thread-3->减后的值:-35
Thread-3->减后的值:-36
Thread-3->减后的值:-37
Thread-3->减后的值:-38
Thread-3->减后的值:-39
Thread-3->减后的值:-40
Thread-3->减后的值:-41
Thread-3->减后的值:-42
Thread-3->减后的值:-43
Thread-3->减后的值:-44
Thread-3->减后的值:-45
Thread-3->减后的值:-46
Thread-3->减后的值:-47
Thread-3->减后的值:-48
Thread-3->减后的值:-49
Thread-3->减后的值:-50
Thread-2->增加后的值:-49
Thread-2->增加后的值:-48
Thread-2->增加后的值:-47
Thread-2->增加后的值:-46
Thread-2->增加后的值:-45
Thread-2->增加后的值:-44
Thread-2->增加后的值:-43
Thread-2->增加后的值:-42
Thread-2->增加后的值:-41
Thread-2->增加后的值:-40
Thread-2->增加后的值:-39
Thread-2->增加后的值:-38
Thread-2->增加后的值:-37
Thread-2->增加后的值:-36
Thread-2->增加后的值:-35
Thread-2->增加后的值:-34
Thread-2->增加后的值:-33
Thread-2->增加后的值:-32
Thread-2->增加后的值:-31
Thread-2->增加后的值:-30
Thread-2->增加后的值:-29
Thread-2->增加后的值:-28
Thread-2->增加后的值:-27
Thread-2->增加后的值:-26
Thread-2->增加后的值:-25
Thread-2->增加后的值:-24
Thread-2->增加后的值:-23
Thread-2->增加后的值:-22
Thread-2->增加后的值:-21
Thread-2->增加后的值:-20
Thread-2->增加后的值:-19
Thread-2->增加后的值:-18
Thread-2->增加后的值:-17
Thread-2->增加后的值:-16
Thread-2->增加后的值:-15
Thread-2->增加后的值:-14
Thread-2->增加后的值:-13
Thread-2->增加后的值:-12
Thread-2->增加后的值:-11
Thread-2->增加后的值:-10
Thread-2->增加后的值:-9
Thread-2->增加后的值:-8
Thread-2->增加后的值:-7
Thread-2->增加后的值:-6
Thread-2->增加后的值:-5
Thread-2->增加后的值:-4
Thread-2->增加后的值:-3
Thread-2->增加后的值:-2
Thread-2->增加后的值:-1
Thread-2->增加后的值:0
Java线程面试题:设计四个线程,其中两个线程每次对 j 加 1,另外两个每次对 j 减 1,程序如下。的更多相关文章
- 创建4个线程,两个对j加一,两个对j减一(j两同两内)
package multithread; public class MyThread { //j变量私有 private int j; //同步的+1方法 private synchronized v ...
- Java 图形化界面设计(GUI)实战练习(代码)
关于Java图形化界面设计,基础知识网上可搜,下面简单介绍一下重点概念,然后就由浅入深代码实例. 程序是为了方便用户使用的,Java引入图形化界面编程. 1.JFrame 是容器类 2.AWT 是抽象 ...
- 【Java面试题】29 设计4个线程,其中两个线程每次对j增加1,另外两个线程对j每次减少1。写出程序。
本题并不难,实现方式有很多种,有很多种结构. 方法一:利用内部类实现,两个实现加减的类实现Runnable接口,然后再实现4个具体线程. 代码: public class ManyThreads { ...
- 【转载】 Java线程面试题 Top 50
Java线程面试题 Top 50 不管你是新程序员还是老手,你一定在面试中遇到过有关线程的问题.Java语言一个重要的特点就是内置了对并发的支持,让Java大受企业和程序员 的欢迎.大多数待遇丰厚的J ...
- Java线程面试题 Top 50 (转载)
转载自:http://www.cnblogs.com/dolphin0520/p/3958019.html 原文链接:http://www.importnew.com/12773.html 本文由 ...
- 50 道 Java 线程面试题(转载自牛客网)
下面是 Java 线程相关的热门面试题,你可以用它来好好准备面试. 1) 什么是线程? 线程是操作系统能够进行运算调度的最小单位,它被包含在进程之中,是进程中的实际运作单位.程序员可以通过它进行多处理 ...
- Java线程面试题 Top 50
转自:http://www.importnew.com/12773.html 不管你是新程序员还是老手,你一定在面试中遇到过有关线程的问题.Java语言一个重要的特点就是内置了对并发的支持,让Java ...
- 【多线程】Java线程面试题 Top 50(转载)
Java线程面试题 Top 50 原文链接:http://www.importnew.com/12773.html 本文由 ImportNew - 李 广 翻译自 javarevisited.欢迎 ...
- Java线程面试题 Top 50(转载)
原文链接:http://www.importnew.com/12773.html 本文由 ImportNew - 李 广 翻译自 javarevisited.欢迎加入Java小组.转载请参见文章末尾的 ...
随机推荐
- 基于Prometheus,Alermanager实现Kubernetes自动伸缩
到目前为止Kubernetes对基于cpu使用率的水平pod自动伸缩支持比较良好,但根据自定义metrics的HPA支持并不完善,并且使用起来也不方便. 下面介绍一个基于Prometheus和Aler ...
- Struts2实现登录权限访问控制
目录: Ⅰ 条件 Ⅱ 目的 Ⅲ 分析 Ⅳ 实现 Ⅴ 具体代码实现 ------------------------------------------------------------------- ...
- 机器学习第2课:单变量线性回归(Linear Regression with One Variable)
2.1 模型表示 之前的房屋交易问题为例,假使我们回归问题的训练集(Training Set)如下表所示: 我们将要用来描述这个回归问题的标记如下: m 代表训练集中实 ...
- 矩阵十题【五】 VOJ1049 HDU 2371 Decode the Strings
题目链接:https://vijos.org/p/1049 题目大意:顺次给出m个置换,重复使用这m个置换对初始序列进行操作.问k次置换后的序列.m<=10, k<2^31. 首先将这m个 ...
- 我的MAC可能在设置环境变量的时候设置错了,现在整个MAC的vi,ls等命令都执行不了了。
1,在命令行中输入export PATH=/usr/bin:/usr/sbin:/bin:/sbin:/usr/X11R6/bin这样可以保证命令行命令暂时可以使用.命令执行完之后先不要关闭终端或者c ...
- C#数据之List
一.C# List根据值找到索引值方法 List<int> test = new List<int>(); int index = test .FindIndex(item=& ...
- Java三大器之拦截器(Interceptor)的实现原理及代码示例
1,拦截器的概念 java里的拦截器是动态拦截Action调用的对象,它提供了一种机制可以使开发者在一个Action执行的前后执行一段代码,也可以在一个Action执行前阻止其执行,同时也提供了 ...
- vscode - emmet失效?
把emmet设置覆盖为用户.
- matplotlib画图实例:pyplot、pylab模块及作图參数
http://blog.csdn.net/pipisorry/article/details/40005163 Matplotlib.pyplot画图实例 {使用pyplot模块} matplotli ...
- CentOS6.8 SVN服务器管理多项目
一 需求 一般来说,公司有多个项目,在搭建好SVN服务器之后,就需要使用SVN来实现不在一个项目中的开发人员不能访问其它项目中的代码. 假设: 有3个项目:project1.project2.proj ...