首页 > 代码库 > java同步相关

java同步相关

说到同步,那就要说到异步,说到同步异步那就要说到多线程

之所以要多线程,是因为这样才能更好的做资源的管控,分配,也能够使得用户体验更好

用android举例,UI处于主线程,耗时操作在其他线程内执行,这样的结果是,可能你现在需要加载好友列表,但是好友列表的数据还没获取到,不过用户依然可以自如的对APP进行操作,而如果全都塞给同一个线程,当获取数据的时候,用户也无法对APP做其他操作了,哪个对于用户的体验更好可想而知

而这种耗时操作放到其他地方执行的方式我们就称之为异步

那么什么是同步呢,这样说,现在有多个人都有你的银行账户密码,都想取钱,大家都想取100而你的余额也只有100,这个时候如果同时取钱,会造成数据出问题或者其他的后果,即可能出现你们两个都取到了100块,你的账户余额为-100的情况出现等等

为了避免这种情况的出现,我们就需要给线程加锁,当然了,锁加在哪是可以讨论的,例如单用户同时只能在一个地方登录,即我这边登录你的帐号密码,另外的人就没办法登录了,又或者说在需要操作数据的地方加锁,例如我和你都可以登录这个帐号,查看关于帐号的信息,例如余额,这个时候无论我们是否是同时,对数据都没有任何影响,而当我们都需要取钱时,只能按照先后顺序,我在执行操作的时候你就不能执行,反之你执行操作的时候我也不能执行。保证同一操作的依次执行,这就叫做同步

而为了达到同步,比较通用的方法就是给线程加锁,即同步锁,即synchronized关键字

至于如何使用,前辈们都写的很详细了,这里也就不照抄了,老规矩列举一篇博文,虽然他写的不算详细,但是我觉得这篇较为通俗易懂

多线程同步锁的使用范例

 

java同步相关