黑马程序员技术交流社区

标题: 同步与异步 [打印本页]

作者: 史小兵    时间: 2012-9-15 23:10
标题: 同步与异步
同步与异步的安全性,还有同步与异步的优缺点有哪些?
作者: 黄敏    时间: 2012-9-16 08:40
推荐看看这个帖子 希望对你有帮助!http://bbs.itheima.com/forum.php ... ;pre_pos=2&ext=
作者: 史小兵    时间: 2012-9-16 09:25
同步就是串行使用一些资源.

    1. 多线程中对共享、可变的数据进行同步.
    对于函数中的局部变量没必要进行同步.
    对于不可变数据,也没必要进行同步.
    多线程中访问共享可变数据才有必要.
  单个线程中可以使用synchronized,而且可以嵌套,但无意义.
同步最最安全,最保险的。而异步不安全,容易导致死锁,这样一个线程死掉就会导致整个
进程崩溃,但没有同步机制的存在,性能会有所提升。但是同步是需要付出代价的,每次调用同步方法时,都需要执行某个管理程序。
简单的说就是A线程使用加锁的资源,那么B线程请求该资源,那么必须等待A线程释放锁。即A线程执行完毕,B线程执行。但是异步线程不存在这样的问题!


作者: 田旭阳    时间: 2012-9-16 10:31
Java容器类包含List、ArrayList、Vector及map、HashTable、HashMap
  ArrayList和HashMap是异步的,Vector和HashTable是同步的,所以Vector和HashTable是线程安全的,而 ArrayList和HashMap并不是线程安全的。因为同步需要花费机器时间,所以Vector和HashTable的执行效率要低于 ArrayList和HashMap。



所谓同步的,就线程安全;异步的,就不是线程安全。同步异步影响到的是多线程状态下访问资源的安全性。

同步的容器类,实现的访问资源前的加锁和访问资源后的解锁操作,确保了多线程状态下的安全访问,但牺牲了执行效率。

而异步的,效率高了,但在多线程模式运行下是不安全的。显然单线程运行的程序,选择异步容器是不涉及线程安全性问题的。

作者: 李健_8    时间: 2012-9-16 14:07
同步较异步安全    同步运行速度较异步要慢   就像开车一样    速度慢但是安全  速度快可是不安全
一句话  概括   同步速度慢  但是安全   异步速度快 可是不安全




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2