Tag Archiv: java

Java生产者消费者的三种实现

  Java生产者消费者是最基础的线程同步问题,java岗面试中还是很容易遇到的,之前没写过多线程的代码,面试中被问到很尬啊,面完回来恶补下。在网上查到大概有5种生产者消费者的写法,分别如下。

  1. 用synchronized对存储加锁,然后用object原生的wait() 和 notify()做同步。
  2. 用concurrent.locks.Lock,然后用condition的await() 和signal()做同步。
  3. 直接使用concurrent.BlockingQueue。
  4. 使用PipedInputStream/PipedOutputStream。
  5. 使用信号量semaphore。  
    (more…)

Java线程间同步(诡异的IllegalMonitorStateException )

  前两天去面试,被问到了一个线程同步的问题,两个线程依次输出1……100,一个线程只输出奇数,一个只输出偶数。之前工作中没写过线程同步的代码,只知道使用object的wait()和notify()方法可以实现线程同步,之前也看过线程池实现的代码,用的也是wait()和notify()。 面试过程中没写出来,于是想回来学习下多线程的同步,然后就有了今天这诡异的事。
(more…)

Java线程的使用方法

  大学的时候就顾着搞acm了,没写过工程,尤其是多系统协作的工程。工作中遇到一种场景,我自己代码需要多次调用别的系统api,http的接口rt在几十毫秒左右,我必须在几百毫秒内完成上百次的查询,串行的单线程代码不可能完,所以不可避免需要使用到线程,在java里线程的实现方方式有三种 Runnable Thread Callable。
(more…)