线程调度模式

一般线程调度模式分为两种:

  • 抢占式调度
  • 协同式调度

抢占式调度指的是每条线程执行的时间、线程的切换都由系统控制,系统控制指的是在系统某种运行机制下,可能每条线程都分同样的执行时间片,也可能是某些线程执行的时间片较长,甚至某些线程得不到执行的时间片。在这种机制下,一个线程的堵塞不会导致整个进程堵塞。

协同式调度指某一线程执行完后主动通知系统切换到另一线程上执行,这种模式就像接力赛一样,一个人跑完自己的路程就把接力棒交接给下一个人,下个人继续往下跑。线程的执行时间由线程本身控制,线程切换可以预知,不存在多线程同步问题,但它有一个致命弱点:如果一个线程编写有问题,运行到一半就一直堵塞,那么可能导致整个系统崩溃。

任务执行策略

  • 串行执行策略:串行处理机制通常都无法提供高吞吐率或快速响应性;
  • 显式创建线程:通过为每个请求创建一个线程来提供服务; 缺点:
  • 创建和销毁线程的资源开销非常高;
  • 资源消耗高,活跃的线程会消耗系统资源尤其是内存;
  • 稳定性,在可创建线程的数量上存在限制,包括JVM启动参数、线程栈大小及操作系统限制;
  • 线程池

多线程协作方式

阻塞:任何时候线程必须停下来等待它没有的资源时,就会发生阻塞;如IO阻塞和同步阻塞

放弃:Thread.yield()方法可以让当前线程让出CPU

使用多线程的目的

results matching ""

    No results matching ""