執行緒併發問題和執行緒的休眠

2021-08-19 19:42:41 字數 1807 閱讀 6061

1、併發安全性問題

網際網路的專案中存在這大量的併發案例,如賣火車票,電商**等

範例:火車票有100張票,4個視窗同時賣票

1)採用繼承thread來實現

package com.cn.tickets;

/** * 賣票視窗

* @author administrator

* */

public class saleticket extends thread

//100張票是共享的資源

private static int tickets = 100;

//類屬性,同步鎖(同步鑰匙)物件

private static object obj = new object();

@override

public void run() catch (interruptedexception e)

system.out.println(this.getname()+"正在賣第:"+tickets--+"張票");

}else

}} }

}

package com.cn.tickets;

public class tickettest

}

2)runable介面

package com.cn.tickets2;

/** * 賣票視窗

* @author administrator

* */

public class saleticket implements runnable catch (interruptedexception e)

system.out.println(thread.currentthread().getname()+"正在賣第:"+tickets--+"張票");

}else

}}else

i++;

} }

/*** 非靜態方法的synchronized鎖是當前物件

*/public synchronized void saletickets() catch (interruptedexception e)

system.out.println(thread.currentthread().getname()+"正在賣第:"+tickets--+"張票");

}else

}}

package com.cn.tickets2;

public class tickettest

}

2、執行緒的休眠

執行緒的休眠是很必要的,在做服務端的時候為了減少伺服器的壓力,我們需要休眠,如果休眠是在同步**塊中執行,休眠不會讓出鎖物件

package com.cn.sleep;

/** * 賣票視窗

* @author administrator

* */

public class saleticket implements runnable catch (interruptedexception e)

system.out.println(thread.currentthread().getname()+"正在賣第:"+tickets--+"張票");

}else}}

} }

package com.cn.sleep;

public class sleeptest

}

多執行緒併發問題

執行緒安全是乙個非常燙手的山芋,因為即使合理運用了鎖,也不一定能保證執行緒安全,這是因為落後的編譯器無法滿足日益增長的併發需求,很多看似無錯的 在優化和併發面前產生了麻煩,可以看下面的 x 0 thread1 thread2 lock lock x x unlock unlock 上面的 看著是沒有...

多執行緒的併發問題?

1 描述 在乙個cpu上同時執行多個執行緒時,會存在多個執行緒競爭cpu資源的問題,但是有時候一段 是不允許打斷,或是出現死鎖的狀態。死鎖 多個執行緒出現了鎖巢狀,形成資源互相等待的狀態,使程式無法繼續執行。2 解決或避免死鎖狀態的方法 引入鎖物件 synchronized 同步 塊 在需要遵循原子...

筆記20200512 多執行緒 併發問題

案例 多個執行緒同時操作同乙個物件 買火車票的例子 多執行緒操作不安全咋處理呢?package com.chengguo.執行緒 多個執行緒同時操作同乙個物件 買火車票的例子 多執行緒操作不安全咋處理呢?public class demo 20200509002 thread implements ...