zoukankan      html  css  js  c++  java
  • Java多线程笔记

    1.并发通常可以提高单处理器上程序的性能

      其实,在单处理器上并发的执行程序锁用的开销大于顺序执行。然而顺序执行时,程序有时会因为某些条件(通常是I/O问题)导致不能继续执行,称为线程阻塞,如果没有并发,程序将停止不前。而使用了并发,一个任务阻塞,其他任务还可以继续执行,这就保证了程序的完成。所以,如果确定没有任务会出现阻塞,在单处理器上并发执行程序是不必要的。

    2.并发在单处理器上性能提高最常见的实例是--事件驱动的编程

      并发最吸引人的额就是可以产生可响应的用户界面,比如某个程序将长期的运行某个操作,但是又要随时处理用户的输入,如果在这个长期任务的每一段都加入一个处理用户输入的程序,那是十分不明智的,而创建单独的线程来处理用户输入就是非常棒的实现

    3.操作系统会隔离进程,但Java却不行,所以,Java多线程最困难的就是协调多个线程对同一块资源的访问,确保资源不会同时被多个线程访问。

    4.四中线程池的区别(newCachedThreadPool,newFixedThreadPool,newScheduledThreadPool,newSingleThreadExecutor 

      new Thread()创建线程这种方式有很多弊端:a.每次new Thread新建对象性能差。b.线程缺乏统一管理,可能无限制新建线程,相互之间竞争,占用过多资源导致死机。c.缺乏更多功能,如定时执行,定期执行,线程中断。

      newCachedThreadPool:创建一个可缓存的线程池,如果线程长度超过处理需要,可灵活的回收空闲线程,若没有可回收的就新建线程(首选)

      newFixedThreadPool:定长线程池,可控制线程的最大并发数,超出的线程按队列等候

      newScheduledThreadPool:定时线程池,支持定时及周期性任务执行

      newSingleThreadExecutor :单一线程池,只会用唯一的线程来执行工作,所有任务按照FIFO来执行

  • 相关阅读:
    读《ASP.NET Core3框架揭秘》之3&4~依赖注入
    读《ASP.NET Core3框架揭秘》之2~跨平台的奥秘
    读《ASP.NET Core3框架揭秘》之1~全新的开发体验
    C# 获取当前方法/父方法的信息
    Redis——集群(cluster)
    Redis——哨兵(sentinel)
    Redis——主从复制
    Redis——版本升级&数据迁移
    Redis——6.0集群安装部署
    Redis——常用命令
  • 原文地址:https://www.cnblogs.com/cwjbest/p/6582653.html
Copyright © 2011-2022 走看看