zoukankan      html  css  js  c++  java
  • 关于线程安全的一点总结

     先写一点,以后再慢慢改:

    1.synchronized(同步锁):以时间换取安全,效率低下

    2.ThreadLocal:以空间换取时间,比较消耗资源,安全

    3.单例模式用双重锁比价好,线程安全且效率还行

    4.线程的挂起有wait(被动,需要外界唤起),sleep(主动,不释放资源),当然,叫挂起好像有点不太合适,我这里只是说这个意思。唤起有:notify(他是随机唤起的),一般用nofityAll(唤起所有其他线程),更底层的可以用LocalSupport,可以控制线程的等待与开启(好像是synchronized的底层实现,具体我也没有去研究源码)

    5.Thread类,Runnable接口(Thread的底层实现,有时候不能用thread可以用runnable),Callable接口(有返回值)  

    6.原子类(automaticinteger等),用来解决多线程问题,因为其具有原子性(也就是说转换为汇编语言是一句,机器一次只会执行一个这种语句,跟我们原来学习的  

    MOVE AL,BL类似吧)

    7.线程安全的类:hashtable,enumeration,statck,vector,stringbuffer等

    8、四种线程池

    newCacheThreadPool(), 创建一个可缓存的线程池,如果线程池长度超过处理需要,可灵活回收空闲线程,如果线程池长度小于处理需求,则新建线程
     newFixedThreadPool(),创建一个定长的线程池,可控制现场最大并发数,超出的线程会在线程队列中等待
    newScheduledThread()创建一个定长的线程池,支持定时,周期性的执行任务
    newSingleThreadExecutor(),创建一个单线程化的线程池,它只会用唯一的工作线程类执行任务,保证所有任务按照指定顺序执行;
     
     
    其他的以后想到再说
  • 相关阅读:
    原生态 php连接mysql
    sql查询慢 查找
    死锁查询和处理
    linq详细案例
    linq深入
    DataTable 与XML 交互
    DataTable运用
    通过反射修改已有数组的大小
    通过反射取得并修改数组信息
    通过反射机制直接操作属性
  • 原文地址:https://www.cnblogs.com/yzjT-mac/p/6371067.html
Copyright © 2011-2022 走看看