同步和异步有何异同,在什么情况下分别使用他们?

解决方案 »

  1.   

    我举个例子吧:比如你有两个方法,方法A跟方法B,我会在方法A中调用方法B。同步情况下:
    1。调用方法A。
    2。方法A调用方法B。
    3。方法B运行。
    4。方法B结束。
    5。方法A继续运行。
    6。方法A结束。异步情况下:
    1。调用方法A。
    2。方法A调用方法B。
    3。方法A继续运行,同时方法B也会在另一个线程中运行。
    4。最后有可能是方法A先结束,也有可能是方法B先结束。
      

  2.   

    synchronized,同步的工作方法是使用锁,java中每个对象都一个内置锁,只要对象具有synchronized关键字的方法代码,这个内置锁才有用。1,方法是用来使用数据的,当方法准备访问受保护的数据,才需要同步。2,当多个对象或线程访问一个对象的方法时候,才需要同步。
        同步会影响性能,甚至在使用不当的时候会发生死锁,注意不要滥用。
      

  3.   

    简单的例子:
    SwingUtilities.invokeLater就是异步,不等处理完毕就立即返回
    相对的
    SwingUtilities.invokeAndWait就是同步