java线程的同步和异步
1)同步:
就是排队,发送一个请求,等待返回,然后再发送下一个请求,如:A线程请求资源,好巧该线程正在被B线程使用,那不好意思,A就只能排队等待。
在java多线程中,多个线程同时请求同一个资源,很可能会导致资源的数据不安全,一般共享某一资源的时候,如果每个人都有有权利修改,两人同时修改了一个文件,这时读到的可能就是错误的数据了,所以就引进了同步机制。
例如:银行的转账,电话
2)异步:
不需要排队,当发送一个请求时,不用等待返回,可直接发送下一个请求。
例如:广播,
3)特点
同步相对安全,可以避免死锁,为了防止多线程并发对同一数据的修改,就需要同步机制,也就是保证线程安全;而异步不安全,容易死锁,但也大大提高了效率。
两者的区别总的来说就是:同步需要等待,异步不需要等待。