日期:2014-05-20  浏览次数:20672 次

java 面试题,不太会!
设计两个线程,对一个初始值为1的整型变量进行操作,一个线程对变量i进行自加操作,另一个线程对变量i进行自减的操作,要求在程序中变量的值符合010101010。。。。的规则变化
java 线程 面试题 设计

------解决方案--------------------
哈,这题我在写代码玩的时候写过类似的,要写对是不容易,而且看题目要求,楼上的说法应该不能得分。程序里面不能有任何对于数值判断的操作,否则这题就没意思了
------解决方案--------------------
好吧因为之前说了这句话,所以不得不写一个并非完美的解法。。。其实判断还是要的,只是不会每一次被唤醒都要做判断
package test;

public class Test implements Runnable {
  private static int iValue = 0;

  private static Object iLock = new Object();

  private final int iStepSize;

  public Test(final int stepSize) {
    iStepSize = stepSize;
  }

  @Override
  public void run() {
    while (true) {
      System.out.print(iValue);
      iValue += iStepSize;
      synchronized (iLock) {
        iLock.notifyAll();
        try {
          iLock.wait();
        }
        catch (InterruptedException e) {

        }
      }
    }
  }

  public static void main(final String[] args) throws Exception {
    Thread t1 = new Thread(new Test(1));
    Thread t2 = new Thread(new Test(-1));
    t1.start();
    Thread.sleep(100);
    t2.start();
    Thread.sleep(500);
  }
}

------解决方案--------------------