在多线程中使用同步机制可以有很多方法,synchronized只是其中一个。其实只要我们明白了原理,使用什么技术都行。在java中明确提出了两个概念来达到同步的作用其一便是synchronized,其二便是Lock。这两个一个是面向过程的思想,一个是面向对象的思想。现在我来为大家解释一下什么是同步,明白了这个原理,你就会明白要是线程同步的方法就不止这两个方法了。想明白什么是同步就必须明白什么是异步。在计算机中异步传输是面向字符的传输,它的单位是字符;而同步传输是面向比特的传输,它的单位是桢,它传输的时候要求接受方和发送方的时钟是保持一致的。这是计算机硬件层的一个同步于异步的定义,那么在我们的多线程中的同步于异步奇偶是什么呢?记住在这中层次中有一个共同的要求即是通信双方要步调一致这是关键。什么是步调一致呢?步调一致不是步调一样。所谓一致就是按照某一种规定,双方按照这种规定办事。这种规定就是保证双方同步的关键。所以只要我们明白了这个,我们自己也可以创建这个规定,让我们的线程按照这个规定办事就能达到同步的要求。在java中不管是synchronized还是Lock都是一种规定。只不过他们的设计思想不一样而已。一个是面向过程而已,一个是将这个规定封装成了一个对象,我们大家都知道凡是封装成了对象,那么他就能提供更多的功能相对于面向过程的。这个大家可以到网站上随便一查就知道lock在提供同步方面与synchronized有什么区别。我今天的重点是告诉大家在java中我们还可以使用的同步机制。比如在java5中的信号灯技术,队列阻塞技术。等等。再比如平时一个简单的boolean型,都可以实现一种同步的要求。记住一点,用你所学的东西创建一个规定,再将这个规定封装成对象,只要你的多线程使用了你的规定,那你实现的就是一种同步。现在你就是多线程高手了,试一试吧
|