设计四个线程,其中两个线程每次对j增加1,另外两个线程对j每次减少1

设计4个线程,其中两个线程每次对j增加1,另外两个线程对j每次减少1
public class ThreadIncDec {

	private int j;

	public static void main(String[] args) {
		ThreadIncDec incDec = new ThreadIncDec();
		Inc inc = incDec.new Inc();
		Dec dec = incDec.new Dec();
		for (int i = 0; i < 2; i++) {
			Thread t = new Thread(inc);
			t.start();
			t = new Thread(dec);
			t.start();
		}
	}
	
	//计数加一
	private synchronized void inc() {
		j++;
		System.out.println(Thread.currentThread().getName() + "-inc:" + j);
	}

	//计数减一
	private synchronized void dec() {
		j--;
		System.out.println(Thread.currentThread().getName() + "-dec:" + j);
	}

	//内部类实现的线程,线程对计数器加一
	class Inc implements Runnable {
		public void run() {
			for (int i = 0; i < 100; i++) {
				inc();
			}
		}
	}

	//内部类实现的线程,线程对计数器减一
	class Dec implements Runnable {
		public void run() {
			for (int i = 0; i < 100; i++) {
				dec();
			}
		}
	}
}

下一篇关于java字符串反转
1 楼 IcyFenix 2010-12-02  
靠同步去加减,应该算是最基本也是最慢的方法了吧。

实际使用的时候考虑一下concurrent包的那堆原子数吧
2 楼 spring5365 2010-12-02  
IcyFenix 写道
靠同步去加减,应该算是最基本也是最慢的方法了吧。

实际使用的时候考虑一下concurrent包的那堆原子数吧

是的,最近正在研究,所以只发了最简单的,谢谢
3 楼 coreymylife 2010-12-02  
atomInteger
4 楼 i2534 2010-12-02  
coreymylife 写道
atomInteger

正解.不用你同步,api帮你搞定.
5 楼 spring5365 2010-12-02  
i2534 写道
coreymylife 写道
atomInteger

正解.不用你同步,api帮你搞定.

这个还真没用过,谢谢,马上研究一下
6 楼 onlylau 2010-12-02  
coreymylife 写道
atomInteger

设计四个线程,其中两个线程每次对j增加1,另外两个线程对j每次减少1 正解且是最好最简便方法!!!
7 楼 bbflys 2010-12-02  
似乎是Thinking in Java里的一个例子。。。
8 楼 spring5365 2010-12-02  
bbflys 写道
似乎是Thinking in Java里的一个例子。。。

这个是我去一家公司的笔试题,好长时间没看过Think in java了
9 楼 月落码农 2010-12-02  
spring5365 写道
bbflys 写道
似乎是Thinking in Java里的一个例子。。。

这个是我去一家公司的笔试题,好长时间没看过Think in java了


如果没错,应该是华为吧!我记得我去的时候,他的题目一摸一样。
10 楼 spring5365 2010-12-02  
月落码农 写道
spring5365 写道
bbflys 写道
似乎是Thinking in Java里的一个例子。。。

这个是我去一家公司的笔试题,好长时间没看过Think in java了


如果没错,应该是华为吧!我记得我去的时候,他的题目一摸一样。

看来很多公司都是从网上弄的题啊,这个是杭州恒生电子的
11 楼 月落码农 2010-12-02  
spring5365 写道
月落码农 写道
spring5365 写道
bbflys 写道
似乎是Thinking in Java里的一个例子。。。

这个是我去一家公司的笔试题,好长时间没看过Think in java了


如果没错,应该是华为吧!我记得我去的时候,他的题目一摸一样。

看来很多公司都是从网上弄的题啊,这个是杭州恒生电子的


原来如此哇!呵呵
12 楼 sam_kee 2010-12-02  
thinking in java 还没看完,强势关注
13 楼 spring5365 2010-12-02  
sam_kee 写道
thinking in java 还没看完,强势关注

呵呵,努力学习,那本书确实很有用的,我只看了第二版,当年是改行,完全自学啊,好多东西当时都不理解
14 楼 wenxiang_tune 2010-12-02  
很搞笑,我面试也有这道题,
15 楼 wangpeihu 2010-12-03  
我面试的时候也遇到过这个题目,一个字都没变哦。