欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  Java

1.Java并发/多线程介绍

程序员文章站 2022-04-23 21:42:08
...
想当年一台计算机只有一个CPU,并且一次只能处理一个程序的能力。后来多任务处理出现了,这就意味着计算机可以同时处理多个程序了。虽然它不是真正的“同时”。单独的CPU在程序之间被共享。操作系统将会在运行中的程序进行切换,在切换之前执行一会他们中的一个。

伴随着多任务处理的到来,对于软件开发者来说是一个新的挑战。程序不能去假设所有的CPU一直都是可用的了,或者所有的内存以及其他的计算机资源。一个好的程序应该释放所有它不再使用的资源,以至于其他的程序可以使用它们。

后来多线程出现了,这就意味着你在相同的程序中可以执行多个线程。一个线程可以认为是一个CPU在执行一个程序。当你有多个线程执行在相同的程序中时,就像是有多个CPU执行在相同的程序中。

多线程可以是一个很好的方式去增加一些类型程序的性能。然而,多线程相对于多任务来说,甚至是一个更大的挑战。这个线程正在执行在相同的程序中,一次同时读和写相同的内存。这个就可能导致在单线程中没有见过的错误。这些错误中的一些在单CPU机器中可能没有见过,因为两个线程从来不会同时执行。现代的计算机,都是多核CPU,并且甚至也会有多种的CPU。这就意味着分开的线程可以同时被分开的核或者CPU去执行。

1.Java并发/多线程介绍

如果一个线程读一个内存单元,而另外一个线程写他的时候,第一个线程将会以读到什么值结束?这个老的值?还是被第二个线程写的值?或者是这两个之间的一个混合值?或者如果两个线程同时写相同的内存单元,当他们完成的时候什么值会留下呢?通过第一个线程写的值?通过第二个线程写的值?还是一个混合的值呢?

没有合适的防范,这些输出中的任何一个都有可能。这个运行状况甚至是不可预测的。这个输出结果可能会随时改变。因此作为一个开发者知道如何使用正确的防范是重要的----这个意味着需要学会控制线程如何访问共享资源,像内存,文件,数据库等等。那个就是这个java并发教程主题中的一个。

Java中的多线程和并发

Java对于开发者来说是第一个使得多线程简单易用的语言。Java从最开始就有多线程功能。因此,Java开发者会经常会面对上面描述的问题。这个就是我为什么写关于Java并发的系列文章。正如对我自己来说,任何Java开发的伙伴都可能会从它中得到益处。

这一系列将会主要是关于Java多线程的,但是发生在多线程中的一些问题,跟发生在多任务处理中和分布式系统中的一些问题是相似的。在这一系列中也可能会提及到多任务处理和分布式系统。因此这个词“并发”不只是多线程。

在2015年的Java并发以及未来

自从第一本Java并发书籍被写,在Java并发框架和设计的世界里已经发生了很多的事情了,并且甚至自从Java5并发工具被发布了之后。

新的,异步的“无共享”的平台和API,像Vert.x和Play / Akka以及Qbit已经应运而生了。这些平台相对于标准的Java线程,共享内存和锁的并发模型,使用了不同的并发模型。新的非堵塞并发算法已经发布了,并且新的非堵塞并发工具,像LMAX Disrupter已经添加到我们的工具包里面了。

伴随着这些新的进展,也是我更新Java并发教程的时间。因此,这个教程再一次处在修改中。只要有时间写他们,新的教程将会被发布。

以上就是1.Java并发/多线程介绍的内容,更多相关内容请关注PHP中文网(www.php.cn)!