A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 马清泽 中级黑马   /  2012-12-6 10:27  /  1558 人查看  /  1 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

多线程使用同步关键字,另一个方法是什么?两者的区别是什么?

1 个回复

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