2016-03-04
更多 →
2016-03-04
更多 →
2016-03-04
更多 →
2016-03-03

其实这是一个面试题。

线程状态

按照 Thread.State 的定义,一个线程可能处在以下六种状态之一 :

  1. NEW

    线程对象被创建,但是还未开始。即还没有调用过 Thread.start

  2. RUNNABLE

    线程正在运行,或者等待分配运行资源

  3. BLOCKED

    等待进入同步块(monitor lock),注意与Lock对象的区别。
    或者在调用 Object.wait 之后再次进入同步的块/方法(意思就是再次进入的这个时候依旧没有获取到锁)。

  4. WAITING

    等待其他线程的操作,触发进入此状态是操作:

     Object.wait with no timeout
     Thread.join with no timeout
     LockSupport.park //比如condition.await()
    
  5. TIMED_WAITING

    等待一定的时间

     Thread.sleep
     Object.wait with timeout
     Thread.join with timeout
     LockSupport.parkNanos
     LockSupport.parkUntil
    
  6. TERMINATED

    线程已经执行完成

更多 →
2016-03-01
更多 →
2016-02-29
更多 →
2016-02-24

首先,定义一下本文中的几个概念:

远程调用:跨进程的方法调用
客户进程:发起方法调用的进程
服务进程:实际实现方法的进程

如果需要设计一个“远程调用”的机制,我们需要考虑以下几个问题:

  1. 客户进程如何发起方法调用
  2. 服务进程如何知道要调用的方法名,如何接收方法参数
  3. 客户进程与服务进程如何通信

基础模式如下:

1

更多 →
2016-02-23
更多 →
2016-02-22
更多 →
2016-02-16
更多 →