设计4个线程,其中两个线程每次对j增加1,另外两个线程对j每次减少1,启动1000条线程,J初始为100,保证结果为100

来源:互联网 发布:linux查看cpu主频 编辑:程序博客网 时间:2024/06/03 18:27

这是一个经典java面试题目,主要考察线程之间如何实现资源共享以及同步。

package com.bookshop.util;public class Test {private int j = 100;public static void main(String args[]) {Test tt = new Test();Inc inc = tt.new Inc();Dec dec = tt.new Dec();for (int i = 0; i < 1000; i++) {// 外层用来跑1000次for (int j = 0; j < 2; j++) {// 内层用来生成四个线程Thread t = new Thread(inc);t.start();Thread t1 = new Thread(dec);t1.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() {inc();}}class Dec implements Runnable {public void run() {dec();}}}


0 0
原创粉丝点击