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小组.转载请参见文章末尾的 ...
随机推荐
- jq和js中click 事件的几种方式总结和click事件的累加问题解决办法
1:常见的三种绑定click事件: 第一种:$("#click").click(function(){ alert("Hello World click") ...
- object references an unsaved transient instance - save the transient instance before flushing异常问题处理
一.异常:org.hibernate.TransientObjectException: object references an unsaved transient instance - save ...
- python读写文件write和flush
打开文件用open,该函数创建一个文件对象,这将用来调用与之关联的其他支持方式. file object = open(file_name [, access_mode][, buffering]) ...
- ant安装配置
点击进入ant官网,找到下载选项. 选择下载安装文件.其余的源文件和手册的下载步骤完全相同. 可以下载官网上对应系统的最新版本.也可以在old ant 版本中选择自己需要的版本.笔者需要ant-1.9 ...
- binder对于boolean类型的传递
通过写了一个AIDL文件,查看自动生成的java文件代码得出的结论: 假如有: boolean loadNativeSharedLib(String libPathName); 则对应的binder ...
- InternalNative.cpp
1 /* * Copyright (C) 2008 The Android Open Source Project * * Licensed under the Apache License, Ver ...
- 【HTML 元素】嵌入另一张HTML文档、通过插件嵌入内容、嵌入数字表现形式
1.嵌入另一张HTML文档 iframe 元素允许在现有的HTML文档中嵌入另一张文档.下面代码展示了iframe元素的用法: <!DOCTYPE html> <html lang= ...
- sqlmap tamper绕过安全狗
可以过5.3版本 放出py #!/usr/bin/env python """ Copyright (c) 2006-2014 sqlmap developers (ht ...
- python——内置对象
python的内置对象 对象类型 常量示例/用法 Number(数字) 3.14159, 1234, 999L 3+4j String(字符串) 'spam', "guido's" ...
- 网站拓扑图(来自qq)