多執行緒,執行緒鎖,例項

2021-08-21 23:41:20 字數 945 閱讀 6187

多執行緒可以分多條執行緒,同時執行程式,但也因此出現一些問題,通過執行緒鎖可以解決

包子例項:

廚師做包子,顧客吃包子,多餘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...