线程基础---wait(),notify的应用一例

2016-02-19 19:00 7 1 收藏

下面图老师小编要跟大家分享线程基础---wait(),notify的应用一例,简单的过程中其实暗藏玄机,还是要细心学习,喜欢还请记得收藏哦!

【 tulaoshi.com - 编程语言 】

  本例子实现了两个线程,每个线程输出1到100的数字。第一个线程输出1-10,停止,通知第二个线程 输出1-10 第二个线程停止 通知第一个线程 输出11-20 ...实现的要点是在Java中,每个对象都有个对象锁标志(Object lock flag)与之想关联,当一个线程A调用对象的一段synchronized代码时,它首先要获取与这个对象关联的对象锁标志,然后执行相应的代码,执行结束后,把这个对象锁标志返回给对象;因此,在线程A执行synchronized代码期间,假如另一个线程B也要执行同一对象的一段synchronized代码时(不一定与线程A执行的相同),它将要等到线程A执行完后,才能继续....
  
  如何利用wait() notify() notifyAll()?
  
  在synchronized代码被执行期间,线程可以调用对象的wait()方法,释放对象锁标志,进入等待状态,并且可以调用notify()或者notifyAll()方法通知正在等待的其他线程。notify()通知等待队列中的第一个线程,notifyAll()通知的是等待队列中的所有线程。?XML:namespace prefix = o ns = "urn:schemas-microsoft-com:Office:office" />

(本文来源于图老师网站,更多请访问http://www.tulaoshi.com/bianchengyuyan/)
 
package jdeveloper.study;
  /**
   * Title:        Jdeveloper's Java Projdect
   * Description:  n/a
   * Copyright:    Copyright (c) 2001
   * Company:      soho  http://www.ChinaJavaWorld.com
   * @author jdeveloper@21cn.com
   * @version 1.0
   */
  import java.lang.Runnable;
  import java.lang.Thread;
  public class DemoThread implements Runnable{
    public DemoThread() {
           TestThread testthread1 = new TestThread(this,"1");
           TestThread testthread2 = new TestThread(this,"2");
           testthread2.start();
           testthread1.start();
    }
    public static void main(String[] args) {
      DemoThread demoThread1 = new DemoThread();
    }
     public void run(){
          TestThread t = (TestThread) Thread.currentThread();
          try{
            if (!t.getName().equalsIgnoreCase("1")) {
                synchronized(this) {
                    wait();
                }
            }
            while(true){
  

来源:http://www.tulaoshi.com/n/20160219/1619793.html

延伸阅读
标签: SQLServer
  举个例子,设表名为bbs 回复数的字段为renum 变量名$renum 记录序号字段为id 变量名$id   当我们在论坛回贴时会要改写主贴的回复数,传统的方法要用到到两句SQL语句: //取出原值 $query1="select renum bbs where id = '$id'"; …… $renum++; //写回数据库 $query2="update bbs set renum = '$renum'...
wait(),notify()和notifyAll()都是java.lang.Object的方法: wait(): Causes the current thread to wait until another thread invokes the notify() method or the notifyAll() method for this object. notify(): Wakes up a single thread that is waiting on this object's monitor. notifyAll(): Wakes up all threads that are waiting o...
VisualBasic5.0(VB5)是一个功能强大的工具,它有一大特点就是易学易用,下面我们就通过写一个“趣味撞球”的程序来初步体会一下。 首先启动VB5,新建一个标准的EXE工程。此时可以看到,工程包括一个Form1框体。在Form1边框的右下角按住鼠标左键不放,拖动鼠标把Form1的面积改为适当大小,比如6930×4320。再在属性框中把Form1的ScaleMode属...
标签: autocad教程
本文由 wzm1234568 原创,转载请保留此信息! Tulaoshi.Com 昨天把平面图练习集(进阶型)140P做完了。在做的过程中,127题始终没有做出来。郁闷了好久。昨天终于找到答案了。我现在把做的过程贴出来。呵呵。(我可是初学者哟,高手看后要扔砖头的,捡小一点的啊,谢谢!!!) (另外,说一下,这个做法是我请教的高手教的,不...
这是一个时钟程序,使我刚学完Turbo C作图后写的。程序原理我不再说明,在程序中有具体的注释。程序不足之处,请各位多多指点。/**********************************************               Clock.c          &nbs...

经验教程

549

收藏

63
微博分享 QQ分享 QQ空间 手机页面 收藏网站 回到头部