รหัสต่อไปนี้นำไปสู่java.lang.IllegalThreadStateException: Thread already started
เมื่อฉันเรียกstart()
method ครั้งที่สองในโปรแกรม
updateUI.join();
if (!updateUI.isAlive())
updateUI.start();
นี้เกิดขึ้นสองครั้งที่updateUI.start()
ถูกเรียกว่า updateUI.start()
ฉันได้ก้าวผ่านมันหลายครั้งและด้ายที่เรียกว่าสมบูรณ์และทำงานให้เสร็จก่อนกดปุ่ม
การโทรupdateUI.run()
หลีกเลี่ยงข้อผิดพลาด แต่ทำให้เธรดทำงานในเธรด UI (เธรดการเรียกตามที่กล่าวไว้ในโพสต์อื่น ๆ บน SO) ซึ่งไม่ใช่สิ่งที่ฉันต้องการ
เธรดสามารถเริ่มต้นได้เพียงครั้งเดียวหรือไม่? ถ้าเป็นเช่นนั้นฉันจะทำอย่างไรหากต้องการเรียกใช้เธรดอีกครั้ง เธรดนี้กำลังทำการคำนวณบางอย่างในพื้นหลังหากฉันไม่ได้ทำในเธรดมากกว่าที่ทำในเธรด UI และผู้ใช้มีการรอนานอย่างไม่มีเหตุผล