最近工作中遇到了一些并发访问的问题,所以研究了一下关于java并发编程的一些内容。分几篇博客给大家分享一下,关注这方面的朋友可以留言交流一下哈。那么这篇博客就闲扯一些关于并发和线程的内容,作为开篇吧。
我们都应该知道,编写正确的程序是很难的,其实编写正确的并发程序更加是难上加难。因为并发编程比串行编程有很多更加容易出错的地方。
举个例子说的话,左手画圆,右手画方,两手同时操作和先左手后右手操作孰易孰难,很显然易见的。
难,为什么还要用呢?我想这是个比较好的问题,因为凡是都要问个为什么,况且还比较困难的东西,用一定要知道它到底给我们带来多大帮助。
我来说一说(可能不是很对哦,希望指正哈),线程是java语言中不可或缺的重要功能,它能够使复杂的异步代码变得更加简单,从而极大的简化了复杂系统的开发。另外要充分发挥多处理器的强大计算能力,最简单的方式就是使用线程,处理器数量的增长,高效的使用并发变得越来越重要,所以需要用并发。
讨论难和要用的问题挺有趣的,话说利益的驱动下,在硬的骨头也要啃,才知道骨头的味道其实比肉的味道更香。这就是为什么我们要用并发的原因,不管它有多难。
那么,其实在早些时候计算机是没有操作系统的,那时候的编程是从头到尾执行,能够利用计算机中的所有资源,每次只能运行一个程序,在那个时候的计算机颇为珍贵和稀有,十分感叹浪费是多么可怕的一件事情。
还好,我们赶上好时代了,操作系统出现可以让计算机每次运行多个程序,并且在每个程序中有单独的进程运行。操作系统为每个进程分配了各种资源。这样的话就能够充分的利用资源。那么如果说早期浪费资源促使进程出现,那么浪费资源也促使了线程的出现。
线程允许在同一个进程中同时存在多个程序控制流,线程会共享进程中的资源。在操作系统中,线程是基本的调度单位,没有协同机制的情况下,线程是彼此独立执行,这样有效的降低了程序的开发和维护成本,也能够提升复杂应用程序的性能,我比较看好第二点好处。但是如果所有的线程都要访问相同的变量的时候就会出现不可预测的后果,所以要想充分利用资源,实现并发,必须要用好线程,但是这个就是上文说道的难的问题。
这篇文章主要是闲扯了一些并发和线程的相关知识,后面的问题会陆续来解决难的问题,也就是如果使用好线程完成并发编程。