首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > 编程 >

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

2013-11-09 
设计4个线程,其中两个线程每次对j增加1,另外两个线程对j每次减少1java多线程问题,主要考察的就是如何创建

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

java多线程问题,主要考察的就是如何创建线程。此题当然是采用实现runnable接口的方式比较方便。值得思考一下的是最后的运行结果~

程序结束的时候j的值是多少呢?


如果每个线程执行的次数都相同,那么结果当然是0了。因为这两对线程两两抵消。最后j就为0了。

代码如下:

package go.derek;public class ThreadTest {private int j;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<10;i++){inc();}}}class Dec implements Runnable{public void run(){for(int i=0;i<10;i++){dec();}}}public static void main(String[] args){ThreadTest th=new ThreadTest();//这是创建内部类对象的套路。Inc inc=th.new Inc();Dec dec=th.new Dec();for(int i=0;i<2;i++){Thread t=new Thread(inc);t.start();
t=new Thread(dec);t.start();}}}运行结果如下:

Thread-0 inc 1
Thread-0 inc 2
Thread-0 inc 3
Thread-0 inc 4
Thread-0 inc 5
Thread-0 inc 6
Thread-0 inc 7
Thread-0 inc 8
Thread-0 inc 9
Thread-0 inc 10
Thread-1 dec 9
Thread-1 dec 8
Thread-1 dec 7
Thread-1 dec 6
Thread-1 dec 5
Thread-1 dec 4
Thread-1 dec 3
Thread-1 dec 2
Thread-1 dec 1
Thread-1 dec 0
Thread-2 inc 1
Thread-2 inc 2
Thread-2 inc 3
Thread-2 inc 4
Thread-2 inc 5
Thread-2 inc 6
Thread-2 inc 7
Thread-2 inc 8
Thread-2 inc 9
Thread-2 inc 10
Thread-3 dec 9
Thread-3 dec 8
Thread-3 dec 7
Thread-3 dec 6
Thread-3 dec 5
Thread-3 dec 4
Thread-3 dec 3
Thread-3 dec 2
Thread-3 dec 1
Thread-3 dec 0
当然每次的运行结果是不同的,但最后的结果肯定是0~

热点排行