มีคำถามโง่ ๆ ง่ายๆที่กวนใจฉันและมีข้อโต้แย้งมากมายในใจ ฉันต้องการคลายข้อสงสัยทั้งหมดเกี่ยวกับคำถามด้านล่างนี้
class Clstest{
public static String testStaticMethod(String inFileStr) {
// section 0
// section 1
// do something with inFileStr
// section 2
// section 3
return inFileStr;
}
}
สมมติว่ามีเธรดห้าเธรดที่เรียกใช้งานClstest.testStaticMethod("arg-n")
ในเวลาเดียวกัน
Clstest.testStaticMethod("arg-1")
ด้ายสาย 1
เมื่อด้ายที่ 1 คือในส่วนที่ 1, 2 Clstest.testStaticMethod("arg-2")
ด้ายสาย
แล้วเธรด 1 จะเกิดอะไรขึ้น? จะเข้าสู่สภาวะหลับใหล?
เมื่อเธรด 1 มีโอกาสจะกลับมาดำเนินการต่อจากส่วนที่ 1 ที่ถูกหยุดชั่วคราวหรือไม่?
จะเกิดขึ้นได้อย่างไรเมื่อมีการแชร์หนึ่งClstest.testStaticMethod
และสิ่งเดียวกันClstest.testStaticMethod
ระหว่างทั้งห้าเธรด
มีความเป็นไปได้ที่จะแลกเปลี่ยนinFileStr
เธรดที่ส่งโดยหลายเธรดหรือไม่