JAVA/JSP经典面试题汇总

2014-07-30 20:02:00|?次阅读|上传:wustguangh【已有?条评论】发表评论

关键词:Java, JSP|来源:唯设编程网

答案 :  错。 "interface Rollable extends Playable, Bounceable" 没有问题。 interface 可继承多个 interfaces ,所以这里没错。问题出在 interface Rollable 里的 "Ball ball = new Ball("PingPang");" 。任何在 interface 里声明的 interface variable ( 接口变量,也可称成员变量 ) ,默认为 public static final 。也就是说 "Ball ball = new Ball("PingPang");" 实际上是 "public static final Ball ball = new Ball("PingPang");" 。在 Ball 类的 Play() 方法中, "ball = new Ball("Football");" 改变了 ball 的 reference ,而这里的 ball 来自 Rollable interface , Rollable interface 里的 ball 是 public static final 的, final 的 object 是不能被改变 reference 的。因此编译器将在 "ball = new Ball("Football");" 这里显示有错。

28 、设计 4 个线程,其中两个线程每次对 j 增加 1 ,另外两个线程对 j 每次减少 1 。写出程序。

以下程序使用内部类实现线程,对 j 增减的时候没有考虑顺序问题。

public class ThreadTest1{
  private int j;

  public static void main(String args[]){
    ThreadTest1 tt=new ThreadTest1();
    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();
    }

  }

  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();
       }
     }
  }
}
发表评论0条 】
网友评论(共?条评论)..
JAVA/JSP经典面试题汇总