五月天青色头像情侣网名,国产亚洲av片在线观看18女人,黑人巨茎大战俄罗斯美女,扒下她的小内裤打屁股

歡迎光臨散文網(wǎng) 會員登陸 & 注冊

同步塊性能優(yōu)化的代碼

2020-04-14 08:59 作者:小垃圾kiki  | 我要投稿
package cn.jd.syn;

/*
?* 線程安全:在并發(fā)時(shí)保證數(shù)據(jù)的正確性,同時(shí)保證效率盡可能高
?* synchronized
?* 1.同步方法(在方法上面加synchronized)
?* 2.同步塊
?*/

public class SynBlockTest03 {

?? ?public static void main(String[] args) {
?? ??? ?//一份資源
?? ??? ?SynWeb12306? web=new SynWeb12306();
?? ??? ??? ??? ?//多個(gè)代理
?? ??? ??? ??? ?new Thread(web,"laoda").start();
?? ??? ??? ??? ?new Thread(web,"laoer").start();
?? ??? ??? ??? ?new Thread(web,"laosan").start();

?? ?}

}
class SynWeb12306 implements Runnable{
?? ?//票數(shù)
?? ?private int ticketNums=3;
?? ?private boolean flag=true;
?? ?@Override
?? ?public void run() {
?? ??? ?while(flag) {
?? ??? ??? ?test5();
?? ??? ?}
?? ??? ?
?? ?}
?? ?//線程安全:盡可能鎖定合理的范圍(不是指的代碼而是數(shù)據(jù)的完整性)
?? ?//在多線程里面稱為雙重檢測(主要考慮的就是臨界值的問題)
?? ?public? void test5() {
?? ??? ?//假設(shè)還有一張票,多個(gè)線程進(jìn)來,這一塊的代碼攔不住
?? ??? ?if(ticketNums<=0) {//考慮的是沒有票的情況???? ?
?? ??? ??? ?flag=false;
?? ??? ??? ?return;
?? ??? ?}
?? ??? ?synchronized (this) {
?? ??? ??? ?if(ticketNums<0) {//考慮的是最后一張票??? ?
?? ??? ??? ??? ?flag=false;
?? ??? ??? ??? ?return;
?? ??? ??? ?}
?? ??? ??? ?//模擬網(wǎng)絡(luò)延時(shí)
?? ??? ??? ?try {
?? ??? ??? ??? ?Thread.sleep(200); ?
?? ??? ??? ??? ?//進(jìn)入了阻塞狀態(tài),然后200s以后我就重新等待CPU的調(diào)用
?? ??? ??? ??? ?//繼續(xù)執(zhí)行下面的代碼
?? ??? ??? ?} catch (InterruptedException e) {
?? ??? ??? ??? ?e.printStackTrace();
?? ??? ??? ?}
?? ??? ??? ?System.out.println(Thread.currentThread().getName()+"-->"+ticketNums--);
?? ??? ?}
?? ??? ?
?? ?}
?? ?//線程不安全?? 范圍太小鎖不住
?? ?public? void test4() {
?? ??? ?synchronized (this) {
?? ??? ??? ?if(ticketNums<0) {
?? ??? ??? ??? ?flag=false;
?? ??? ??? ??? ?return;
?? ??? ??? ?}
?? ??? ?}
?? ??? ??? ?//模擬網(wǎng)絡(luò)延時(shí)
?? ??? ??? ?try {
?? ??? ??? ??? ?Thread.sleep(200); ?
?? ??? ??? ??? ?//進(jìn)入了阻塞狀態(tài),然后200s以后我就重新等待CPU的調(diào)用
?? ??? ??? ??? ?//繼續(xù)執(zhí)行下面的代碼
?? ??? ??? ?} catch (InterruptedException e) {
?? ??? ??? ??? ?e.printStackTrace();
?? ??? ??? ?}
?? ??? ??? ?System.out.println(Thread.currentThread().getName()+"-->"+ticketNums--);
?? ??? ?
?? ??? ?
?? ?}
?? ?//線程不安全鎖定失敗? ticketNums對象在變(根本原因就是對象的地址發(fā)生了改變)? ?
??? //?? ?對象在變和對象的屬性再變是兩回事
?? ?public? void test3() {
?? ??? ?synchronized ((Integer)ticketNums) {
?? ??? ??? ?if(ticketNums<0) {
?? ??? ??? ??? ?flag=false;
?? ??? ??? ??? ?return;
?? ??? ??? ?}
?? ??? ??? ?//模擬網(wǎng)絡(luò)延時(shí)
?? ??? ??? ?try {
?? ??? ??? ??? ?Thread.sleep(200); ?
?? ??? ??? ??? ?//進(jìn)入了阻塞狀態(tài),然后200s以后我就重新等待CPU的調(diào)用
?? ??? ??? ??? ?//繼續(xù)執(zhí)行下面的代碼
?? ??? ??? ?} catch (InterruptedException e) {
?? ??? ??? ??? ?e.printStackTrace();
?? ??? ??? ?}
?? ??? ??? ?System.out.println(Thread.currentThread().getName()+"-->"+ticketNums--);
?? ??? ?}
?? ??? ?
?? ?}
?? ?
?? ?
?? ?
?? ?
?? ?//同步塊??? 范圍太大性能效率低下
?? ?public? void test2() {
?? ??? ?synchronized (this) {
?? ??? ??? ?if(ticketNums<0) {
?? ??? ??? ??? ?flag=false;
?? ??? ??? ??? ?return;
?? ??? ??? ?}
?? ??? ??? ?//模擬網(wǎng)絡(luò)延時(shí)
?? ??? ??? ?try {
?? ??? ??? ??? ?Thread.sleep(200); ?
?? ??? ??? ??? ?//進(jìn)入了阻塞狀態(tài),然后200s以后我就重新等待CPU的調(diào)用
?? ??? ??? ??? ?//繼續(xù)執(zhí)行下面的代碼
?? ??? ??? ?} catch (InterruptedException e) {
?? ??? ??? ??? ?e.printStackTrace();
?? ??? ??? ?}
?? ??? ??? ?System.out.println(Thread.currentThread().getName()+"-->"+ticketNums--);
?? ??? ?}
?? ??? ?
?? ?}
?? ?
?? ?
?? ?
?? ?
?? ?
?? ?//線程安全,同步
?? ?public synchronized void test1() {
?? ??? ?if(ticketNums<0) {
?? ??? ??? ?flag=false;
?? ??? ??? ?return;
?? ??? ?}
?? ??? ?//模擬網(wǎng)絡(luò)延時(shí)
?? ??? ?try {
?? ??? ??? ?Thread.sleep(200); ?
?? ??? ??? ?//進(jìn)入了阻塞狀態(tài),然后200s以后我就重新等待CPU的調(diào)用
?? ??? ??? ?//繼續(xù)執(zhí)行下面的代碼
?? ??? ?} catch (InterruptedException e) {
?? ??? ??? ?e.printStackTrace();
?? ??? ?}
?? ??? ?System.out.println(Thread.currentThread().getName()+"-->"+ticketNums--);
?? ?}
?? ?

}

同步塊性能優(yōu)化的代碼的評論 (共 條)

分享到微博請遵守國家法律
兴文县| 彝良县| 韶山市| 孝感市| 洮南市| 蓝田县| 泾川县| 新乡县| 菏泽市| 安阳市| 宁河县| 巍山| 黄大仙区| 突泉县| 天津市| 印江| 泸水县| 麻江县| 米脂县| 秭归县| 浦江县| 许昌市| 绍兴县| 普定县| 巴南区| 濮阳市| 吐鲁番市| 凤冈县| 唐海县| 山阳县| 游戏| 宁明县| 垣曲县| 揭西县| 香河县| 海南省| 达拉特旗| 松潘县| 阜宁县| 八宿县| 资溪县|