Java中常用的线程安全类和非线程安全类

一、线程安全的工作原理:

官方解释:jvm中有一个 main memory ,每个线程也有自己的 working memeory.。当一个线程访问一个对象时,会在自己的working memory 创建并复制过来,当多个线程访问同一个变量时就会产生不可预知的结果。

一般通过synchronized(同步)关键字建立一个监控(monitor)。这个monitor可以是要修改的变量,也可以是其他自己认为合适的对象(方法),然后通过给这个monitor加锁来实现线程安全,每个线程在获得这个锁之后,要执行完加载到自己的working memory 到 use 之后 指派到 存储到 main memory的过程。才会释放它得到的锁。这样就实现了所谓的线程安全。


二、线程安全的类

    Vector 线程安全:动态数组HashTable 线程安全:StringBuffer 线程安全:

三、非线程安全的类

    ArrayList :集合LinkedList:集合HashMap:集合HashSet:集合TreeMap:集合TreeSet:集合StringBulider:可变字符序列

四、多线程的使用场景

  • tomcat ,tomcat内部采用多线程,上百个客户端访问同一个WEB应用,tomcat接入后就是把后续的处理扔给一个新的线程来处理,这个新的线程最后调用我们的servlet程序,比如doGet或者dpPost方法.

  • 异步处理大文件。

  • 数据库使用多线程。

  • 后台任务。

声明:文中观点不代表本站立场。本文传送门:https://eyangzhen.com/242938.html

(0)
联系我们
联系我们
分享本页
返回顶部