Android:java.lang.IllegalMonitorStateException:对象在等待之前未被线程锁定()

Android:java.lang.IllegalMonitorStateException:对象在等待之前未被线程锁定(),java,android,Java,Android,我有这段Android代码,它被synchronized语句卡住了。即使我删除了process1.wait(),我也会捕捉到异常。有什么帮助吗 private class LongOperation extends AsyncTask<String, Void, String> { @Override protected String doInBackground(String... params) { try

我有这段Android代码,它被synchronized语句卡住了。即使我删除了process1.wait(),我也会捕捉到异常。有什么帮助吗

 private class LongOperation extends AsyncTask<String, Void, String>
   {

      @Override
      protected String doInBackground(String... params)
      {
         try
         {
     Process process1 = new ProcessBuilder("sh", "/data/local/bin/tcpdump.sh").start();            
            synchronized(process1){
               process1.wait();
             }
         }
         catch (Exception e)
         {
            Log.e("Tcpdump function error", "Unable to capture the packets into the buffer");
         }
         return null;
      }

      /* (non-Javadoc)
       * @see android.os.AsyncTask#onPostExecute(java.lang.Object)
       */
      @Override
      protected void onPostExecute(String result)
      {
         try
         {  
            StringBuffer output = new StringBuffer();
            File file = new File("/data/local/bin/dump.txt");
            BufferedReader br = new BufferedReader(new FileReader(file), 8 * 1024);
            String line;
            while ((line = br.readLine()) != null)
            {
               output.append(line + "\n");
            }
            tv.setText(output);
            setContentView(tv);
         }
         catch (Exception e)
         {
            e.printStackTrace();
         }
      }

      /* (non-Javadoc)
      * @see android.os.AsyncTask#onProgressUpdate(Progress[])
      */
     @Override
     protected void onProgressUpdate(Void... values)
      {

      }
}
私有类LongOperation扩展了异步任务
{
@凌驾
受保护的字符串doInBackground(字符串…参数)
{
尝试
{
Process process1=new ProcessBuilder(“sh”,“/data/local/bin/tcpdump.sh”).start();
已同步(进程1){
process1.wait();
}
}
捕获(例外e)
{
Log.e(“Tcpdump函数错误”,“无法将数据包捕获到缓冲区”);
}
返回null;
}
/*(非Javadoc)
*@see android.os.AsyncTask#onPostExecute(java.lang.Object)
*/
@凌驾
受保护的void onPostExecute(字符串结果)
{
尝试
{  
StringBuffer输出=新的StringBuffer();
File File=新文件(“/data/local/bin/dump.txt”);
BufferedReader br=新的BufferedReader(新文件读取器(文件),8*1024);
弦线;
而((line=br.readLine())!=null)
{
输出。追加(行+“\n”);
}
tv.setText(输出);
设置内容视图(电视);
}
捕获(例外e)
{
e、 printStackTrace();
}
}
/*(非Javadoc)
*@请参阅android.os.AsyncTask#onProgressUpdate(Progress[])
*/
@凌驾
受保护的void onProgressUpdate(void…值)
{
}
}
tcpdump.sh具有以下行
tcpdump-c 10>/data/local/bin/dump.txt

您肯定是想调用
Process.waitFor()?
而不是
wait()?