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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 左拉 中级黑马   /  2014-4-17 15:09  /  1187 人查看  /  3 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

线程同步与异步有什么区别呢?什么叫线程安全,什么叫线程不安全呢:(

3 个回复

倒序浏览
同学, 给你举个简单的例子
你去约会了, 你女(男)朋友没有来, 那你就会一直在等他(她), 如果等待过程中你什么都不做, 这就是同步
什么事异步呢? 就是你在等他(她)的时候, 可以做些其他的事情, 比如聊个qq啊/发个微信啊什么的

线程安全就是, 再给你举个简单的例子
有好多人要给你的银行账户汇款, 这是就会有好多线程都在操作存钱的动作, 结果, 1号线程存进去了, 然后1号线程等待了, 2号线程进来了, 2号线程一看, 钱已经存过了(实际上是第一个线程存进去的), 2号程就认为钱已经存过了, 就不会再执行存钱的操作, 那这个明显就不安全了啊

评分

参与人数 1技术分 +1 收起 理由
zzkang0206 + 1 赞一个!

查看全部评分

回复 使用道具 举报
同步:多个线程共享资源是就实现了线程同步
异步:多个线程互不牵扯,各自执行
安全问题:比如生产与消费,只有当生产一个产品时,才会消费一个产品,否则就是线程不安全,
回复 使用道具 举报
1 同步就是指一个线程要等待上一个线程执行完之后才开始执行当前的线程。
2 异步是指一个线程去执行,它的下一个线程不必等待它执行完就开始执行。
3 如果你的代码所在的进程中有多个线程在同时运行,而这些线程可能会同时运行这段代码。如果每次运行结果和单线程运行的结果是一样的,而且其他的变量的值也和预期的是一样的,就是线程安全的。
  或者说:一个类或者程序所提供的接口对于线程来说是原子操作或者多个线程之间的切换不会导致该接口的执行结果存在二义性,也就是说我们不用考虑同步的问题。
  线程安全问题都是由全局变量及静态变量引起的。
  若每个线程中对全局变量、静态变量只有读操作,而无写操作,一般来说,这个全局变量是线程安全的;若有多个线程同时执行写操作,一般都需要考虑线程同步,否则就可能影响线程安全。
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马