线程管理

1,线程的创建、管理

调用 start() 方法时线程开始运行

  • 继承 Thread 类,覆盖 run() 方法
  • 实现 Runnable 接口,使用带参数的 Thread 构造器创建 Thread

线程有 Id,Name,Priority和State几个属性

interrupt() 用来中断线程,可以用 isInterrupted() 来进行判断。 有 InterruptedException 异常

join() 用来等待线程

守护线程用 setDaemon() 在start() 之前设置

因为 run() 方法不支持 throws 语句,所以异常首先被检查是否设置了当前线程默认的未捕获异常处理器,然后是当前组的异常处理器,最后被打印并终止。 用 setUncaughtExceptionHandler 设置默认处理器。线程可以进行分组,在创建的时候传入 ThreadGroup 对象即可。

如果创建的对象是实现了Runnable接口的类的实例,并作为参数启动这些线程,则共享相同的属性。可以使用 ThreadLocal 接口定义匿名类,实现 initialValue 方法。然后在使用的时候使用 set/get 方法

最后,使用工厂类也可以创建线程 ThreadFactory,需要实现 newThread

 

2,同步和临界区基本概念

synchronized

Lock 接口: ReentrantLock/ReentrantReadWriteLock.ReadLock/WriteLock

 

3,资源同步辅助类

  • Semaphore.acquire/release/tryAcquire
  • CountDownLatch.await/countDown
  • CyclicBarrier.await
  • CountDownLatch 和 CyclicBarrier 还是不一样的, CyclicBarrier只有一个等待接口,等待其他线程然后继续执行,但是 CountDownLatch 可以只 countDown,不一定要继续执行
  • Phaser.onArrive/arriveAndAwaitAvance/register/arriveAndDeregister
  • Exchanger.exchange
posted @ 2015-03-18 15:40  bupthua  阅读(172)  评论(0)    收藏  举报