同步:发送一个请求,等待返回,然后再发送下一个请求。(最安全,但给没必要同步的方法使用,会浪费等待时间)
异步:发送一个请求,不等待返回,随时可以在发送下一个请求。
同步可以避免出现死锁,读脏数据的发生。一般共享某一资源时使用(公共变量等)
同步需要等待,异步无需等待(
同步是一种高开销的操作,因此应该尽量减少同步的内容)
即有synchronized关键字修饰的语句块。
被该关键字修饰的语句块会自动被加上内置锁,从而实现同步
vector是线程(Thread)同步(Synchronized)的,所以它也是线程安全的,
而java中Arraylist的对象是线程异步(ASynchronized)的,是不安全的。
若想改为线程安全的:
ArrayList<String> list
=
Collections.synchronizedCollection(list)
如果不考虑到线程的安全因素,一般用Arraylist效率比较高
线程安全:多个线程访问同一资源,不会产生不确定的结果。