Chinaunix首页 | 论坛 | 博客
  • 博客访问: 287877
  • 博文数量: 124
  • 博客积分: 0
  • 博客等级: 民兵
  • 技术积分: 21
  • 用 户 组: 普通用户
  • 注册时间: 2016-08-20 14:44
文章分类

全部博文(124)

文章存档

2020年(1)

2018年(2)

2016年(2)

2015年(6)

2014年(10)

2013年(23)

2012年(7)

2011年(18)

2010年(15)

2009年(8)

2007年(8)

2006年(23)

2005年(1)

我的朋友

分类: Java

2013-11-19 11:15:26


点击(此处)折叠或打开

  1. package com.vtc365.codec;

  2. import com.vtc365.utils.ConfigureHelper;

  3. public abstract class EncoderThread extends Thread {
  4.     static int STOP=0;
  5.     static int RUNNING=1;
  6.     static int PAUSE=2;
  7.     Integer status=STOP;
  8.     public void run(){
  9.         status=RUNNING;
  10.         while(true){
  11.             synchronized (status) {
  12.                 if(status==STOP)
  13.                     break;
  14.             }
  15.             try {
  16.                 Thread.sleep(5000);
  17.             } catch (InterruptedException e) {
  18.                 // TODO Auto-generated catch block
  19.                 e.printStackTrace();
  20.             }
  21.         }
  22.     }

  23.     public void stopThread(){
  24.         synchronized (status) {
  25.             status=STOP;
  26.             status.notify();
  27.         }
  28.     }
  29. }
当调用该类的stopThread方法时,系统会在notify报错,object not locked by thread before notify();
百思不得其解,27行已经lock了啊。

仔细分析发现,27行的status,和29行的status已经不是一个对象了。
阅读(18600) | 评论(0) | 转发(0) |
0

上一篇:ffmpeg 编译

下一篇:android jni build

给主人留下些什么吧!~~