五月天青色头像情侣网名,国产亚洲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)化的代碼的評論 (共 條)

分享到微博請遵守國家法律
巴楚县| 澄江县| 重庆市| 四平市| 甘孜县| 大城县| 德安县| 兴和县| 广德县| 平阳县| 图们市| 余江县| 巴林右旗| 永修县| 景洪市| 湟源县| 教育| 盖州市| 林甸县| 西城区| 静海县| 长岭县| 依安县| 固原市| 疏勒县| 华亭县| 马龙县| 廉江市| 神农架林区| 综艺| 策勒县| 伊宁市| 陇南市| 金沙县| 兰考县| 普陀区| 岑巩县| 宁津县| 鄂伦春自治旗| 姜堰市| 安乡县|