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

分享到微博請遵守國家法律
马边| 定州市| 临猗县| 兴化市| 林西县| 汶上县| 闽侯县| 小金县| 嘉禾县| 大同县| 太保市| 沾益县| 肇源县| 东至县| 义马市| 白城市| 共和县| 广水市| 萝北县| 江源县| 揭东县| 长岭县| 邵阳市| 海城市| 纳雍县| 阜宁县| 当阳市| 无为县| 鄂托克前旗| 休宁县| 太仆寺旗| 彭水| 卫辉市| 纳雍县| 泾川县| 桂平市| 顺义区| 东宁县| 汾阳市| 上杭县| 轮台县|