Python的异步,python 同步

  Python的异步,python 同步

  在JAVA学习中,很多人认为睡眠和等待是混淆的,等待线程。本文主要介绍这两个人是什么,了解他们的异同。

  一般差异

  简言之,wait)是线程同步的一个示例方法。在java.lang.Object中定义,所以可以调用任何对象。但是,前提是在同步代码块中调用对象并解锁,以便另一个线程可以跳转并获取锁。另一方面,Thread.sleep))是一个静态方法,可以从任何上下文中调用。Thread.sleep()暂停当前线程而不解锁它。

  主要区别

  Sleep))线程控制自己的进程。Wit))用于线程间通信,以使带有对象锁的线程等待指定的时间或通知)。

  等待))解除锁和监视器,睡眠))不要解除锁、监视器等。Wit)用于线程间通信,sleep)用于在运行时部署暂停。

  适用的字段。Wait只有放在同步语句块中才有意义。

  需要注意的事项

  等待会取代睡眠吗?

  不会,直接调用wait会抛出Java . lang . illegalmonitorstateexception异常。这是因为没有获得对象锁,所以无法解锁。

  如何获得一把锁?

  执行对象的同步实例方法。

  执行对象感知类的同步静态方法。

  运行同步代码块,该代码块向对象添加了同步。

  示范

  线程.睡眠

  静态语音方法1(

  同步(锁定){

  尝试{

  system . out . println([ thread . current thread]])。getname()开始睡眠。);

  thread . sleep(5 _ 000;

   system . out . println([ thread . current thread)getName)]结束睡眠。);

  } catch(互联))

  E.打印堆栈跟踪(;

  }

  }

  }

  publicstaticvoidmain(string[]args){

  (T1)的流,T2)。foreach)name-new thread)difference ofwaitandsleep:方法1,name)(。开始)

  }

  运行这个示例总共需要10秒钟。在线程T1获得锁之后,它挂起执行。此时,锁保留在T1线程中,并在T2线程中被获取。

  [T1]开始睡眠。

  [T1]结束睡眠。

  [T2]开始睡觉。

  [T2]结束睡眠。

  反对,等等

  静态语音方法2(

  同步(锁定){

  尝试{

  system . out . println([ thread . current thread()。getName ) ]开始等待);

  lock . wait(;

  system . out . println(([ thread . current thread))]end wait);

  } catch(互联))

  E.打印堆栈跟踪(;

  }

  }

  }

  publicstaticvoidmain(string[]args){

  (T1),T2)。foreach)name-new thread)difference ofwaitandsleep 33603360方法2,name)(。开始) )

  }

  运行此示例时,将立即输出T1/T2开始等待,但不会输出T1/T2结束等待。这是因为没有线程调用LOCK.notify/notifyAll唤醒。

  [T1]开始等待。

  [T2]开始等待。

  结论

  调用:

  Wit)):对象调用,当前线程必须与带锁的对象同步。

  Sleep)):线程调用,总是执行的当前线程。

  同步:

  Wait)):同步多个线程以同时访问一个对象

  Sleep():多个线程等待线程同步休眠。

  洛克:

  Wait)):将有机会解锁并被其他线程执行

  Sleep)):按住锁,一定时间后释放或中断。

  唤醒条件:

  Wait)):对被叫公告,所有公告。

  Seep(:)至少直到它到期或中断。

  使用:

  Sleep)):用于时间同步

  等待(:对于多线程同步)

  -说点什么。

  个人QQ:1837307557

  Battcn开源小组(针对初学者)391619659

  微信官方账号:battcn(欢迎开玩笑)))。

郑重声明:本文由网友发布,不代表盛行IT的观点,版权归原作者所有,仅为传播更多信息之目的,如有侵权请联系,我们将第一时间修改或删除,多谢。

留言与评论(共有 条评论)
   
验证码: