关于java:多线程

4次阅读

共计 838 个字符,预计需要花费 3 分钟才能阅读完成。

什么要应用多线程?
先从总体上来说:从计算机底层来说:线程能够比作是轻量级的过程,是程序执行的最小单位, 线程间的切换和调度的老本远远小于过程。另外,多核 CPU 时代意味着多个线程能够同时运行,这缩小了线程上下文切换的开销。从当代互联网发展趋势来说:当初的零碎动不动就要求百万级甚至千万级的并发量,而多线程并发编程正是开发高并发零碎的根底,利用好多线程机制能够大大提高零碎整体的并发能力以及性能。再深刻到计算机底层来探讨:单核时代:在单核时代多线程次要是为了进步单过程利用 CPU 和 IO 零碎的效率。假如只运行了一个 Java 过程的状况,当咱们申请 IO 的时候,如果 Java 过程中只有一个线程,此线程被 IO 阻塞则整个过程被阻塞。CPU 和 IO 设施只有一个在运行,那么能够简略地说零碎整体效率只有 50%。当应用多线程的时候,一个线程被 IO 阻塞,其余线程还能够持续应用 CPU。从而进步了 Java 过程利用系统资源的整体效率。多核时代: 多核时代多线程次要是为了进步过程利用多核 CPU 的能力。举个例子:如果咱们要计算一个简单的工作,咱们只用一个线程的话,不管零碎有几个 CPU 外围,都只会有一个 CPU 外围被利用到。而创立多个线程,这些线程能够被映射到底层多个 CPU 上执行,在工作中的多个线程没有资源竞争的状况下,工作执行的效率会有显著性的进步,约等于(单核时执行工夫 /CPU 外围数)。

应用多线程可能带来什么问题?
并发编程的目标就是为了能进步程序的执行效率进步程序运行速度,然而并发编程并不总是能进步程序运行速度的,而且并发编程可能会遇到很多问题,比方:内存透露、死锁、线程不平安等等。
如何了解线程平安和不平安?

线程平安和不平安是在多线程环境下对于同一份数据的拜访是否可能保障其正确性和一致性的形容。线程平安指的是在多线程环境下,对于同一份数据,不论有多少个线程同时拜访,都能保障这份数据的正确性和一致性。线程不平安则示意在多线程环境下,对于同一份数据,多个线程同时拜访时可能会导致数据凌乱、谬误或者失落。

正文完
 0