找回密碼
 註冊
搜索
查看: 2986|回復: 0

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

[複製鏈接]
發表於 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, 2025-5-1 02:26 , Processed in 0.033309 second(s), 21 queries .

Powered by Discuz! X3.5

© 2001-2025 Discuz! Team.

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