多執行緒可以分多條執行緒,同時執行程式,但也因此出現一些問題,通過執行緒鎖可以解決
包子例項:
廚師做包子,顧客吃包子,多餘50個包子廚師停止做包子,包子為零顧客停止吃包子,當廚師做到10個後顧客可以吃包子
顧客類 customer.class
public
class
customer
implements
runnable
public
void
run() catch (interruptedexception e)
}try catch (interruptedexception e)
pack.num--;
system.out.println("顧客在吃包子,包子數量:" + pack.num);}}
}}
廚師類 cooker.class
public
class
cooker
implements
runnable
public
void
run()
try catch (interruptedexception e)
pack.num++;
system.out.println("廚師在做包子,包子數量:" + pack.num);
} else catch (interruptedexception e) }}
}}
}
包子類 pack.class
public
class pack
測試類 test.class
public
class test
}
多執行緒例項
include include include include define max 10 pthread t thread 2 pthread mutex t mut int number 0,i void thread1 printf thread1 主函式在等我完成任務嗎?n pthread ...
多執行緒例項
正常的情況下,執行緒在執行時多個執行緒之間執行任務的時機是無序的。可以通過改造 的方式使它們執行具有有序性。public class mythread extends thread override public void run else catch interruptedexception e ...
執行緒同步 多執行緒自旋鎖
短時間鎖定的情況下,自旋鎖 spinlock 更快。因為自旋鎖本質上不會讓執行緒休眠,而是一直迴圈嘗試對資源訪問,直到可用。所以自旋鎖線程被阻塞時,不進行執行緒上下文切換,而是空轉等待。對於多核cpu而言,減少了切換執行緒上下文的開銷,從而提高了效能。class program spinlock是n...