TShopping

 找回密碼
 註冊
搜索
查看: 2524|回復: 0
打印 上一主題 下一主題

[教學] Android Thread.isAlive()的使用方法

[複製鏈接]
跳轉到指定樓層
1#
發表於 2017-8-10 21:53:39 | 只看該作者 回帖獎勵 |倒序瀏覽 |閱讀模式
 
Push to Facebook
多線程系列之wait、notify、sleep、join、yield、synchronized關鍵...



想了解線程可先看上述連結
先建立一個thread, 寫法如下,可以正常工作
  1. private void start()
  2. {
  3. Thread mvThread = new Thread(new ThreadStart(MoveFiles));
  4. mvThread.Start();
  5. }

  6. private void MoveFiles()
  7. {
  8. .........
  9. .........
  10. }
複製代碼


或是
  1. Thread mvThread = new Thread(new Runnable(){
  2.     @Override
  3.     public void run()
  4.     {
  5.         // Do Stuff
  6.     }
  7. });

  8. mvThread.start();
複製代碼


我希望在thread結束後,繼續往下工作
但因為執行緒會不等工作完成就往下執行
讓後面的工作無法完成,因為成是先做完後續工作
如背景工作時,檔案過大時會導致順序錯亂
但可加上了isAlive的判斷, 如下…

  1. private void start()
  2. {
  3. Thread mvthread = new Thread(new ThreadStart(MoveFiles));
  4. mvthread.Start();

  5. while (mvthread.isAlive()==true) ;
  6. mvThread.sleep(100);
  7. }

  8. private void MoveFiles()
  9. {
  10. .........
  11. .........
  12. }
複製代碼



  1. Thread mvThread = new Thread(new Runnable(){
  2.     @Override
  3.     public void run()
  4.     {
  5.         // Do Stuff
  6.     }
  7. });

  8. mvThread.start();
複製代碼

這樣就會等mvThread完成他的工作才繼續往下執行工作
不會有順序錯亂的問題了


參考文章
https://stackoverflow.com/questi ... -use-thread-classes

 

臉書網友討論
*滑块验证:
您需要登錄後才可以回帖 登錄 | 註冊 |

本版積分規則



Archiver|手機版|小黑屋|免責聲明|TShopping

GMT+8, 2024-5-3 14:50 , Processed in 0.104612 second(s), 22 queries .

本論壇言論純屬發表者個人意見,與 TShopping綜合論壇 立場無關 如有意見侵犯了您的權益 請寫信聯絡我們。

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

快速回復 返回頂部 返回列表