不要理论的,来点编程题。谢谢

解决方案 »

  1.   

    好。我先来个例子public class JavaThreadPool { /**
     * @param args
     */
    public static void main(String[] args) {
    // TODO Auto-generated method stub ExecutorService pool = Executors.newFixedThreadPool(2);
    Thread t1 = new MyThread();
    Thread t2 = new MyThread();
    Thread t3 = new MyThread();
    Thread t4 = new MyThread();
    Thread t5 = new MyThread();


    pool.execute(t1);
    pool.execute(t2);
    pool.execute(t3);
    pool.execute(t4);
    pool.execute(t5);

    pool.shutdown();
    }}
    class MyThread extends Thread{ @Override
    public void run() {
    System.out.println(Thread.currentThread().getName() + " 正在执行 ....");
    }


    }
      

  2.   

    哥哥们,我也不是太菜。至少 生产者消费者问题我可以写 好几种方法我也知道CyclicBarrier
    semaphore  ConcurrentHashMap   
    同步,互斥 ,操作系统学过啊面试经常考的啊 你们都是过来人  啊。来点给力的题目啊
      

  3.   

    A 公司有一 Web 通知接口,该通知接口是采用 HTTP GET 请求的方式通知调用者 B,前一次请求的处理已经操作完成,告诉调用者 B 你可以继续了,B 收到通知后处理自己的业务逻辑,在处理完成后给 A 的通知接口一个成功的响应。由于采用的是 HTTP 请求,那就有可能会碰到网络连接超时、响应超时,甚至是根本连不上的情况。为了能尽可能地通知到调用者 B,该通知接口采用这样的重试的时间:1:与调用者 B 提供的 HTTP 通知接口在 1 分钟内 TCP 握手失败,那么进入重试状态;
    2:HTTP 请求发出之后,若在 2 分钟内未收到 HTTP 请求的响应,那么进入重试状态;当进入重试状态时,会再尝试三次。第一次尝试在失败后约 5 分钟
    第二次尝试在第一次尝试失败后约 15 分钟
    第三次尝试在第二次尝试失败后约 30 分钟若三次尝试均以失败告终则将数据列入归档中,供今后对账之用。现在,你作为 A 公司这个通知接口的技术设计人员,需要实现一个这样的通知系统,考虑:1:高可用:当有服务器宕机时,会有其他服务器接管,该服务器内存中需要通知的数据不允许丢失
    2:高并发:高峰时瞬间会有很多的数据需要通知到 B
    3:数据响应的正确性:若收到 B 的响应时能保证数据处理正确
    4:尝试次数今后可能会更改;
    5:尝试时间间隔今后可能会更改;
    6:该通知接口每秒至少能处理 20 个通知;
    7:重试需要达到这些技术指标:首次失败率为 30%;第一次尝试失败率在 20%;第二次尝试失败率在 10%,第三次尝试失败率为 5% 时,能保证每次尝试的时间间隔尽可能地接近尝试时间标准。