最美情侣中文字幕电影,在线麻豆精品传媒,在线网站高清黄,久久黄色视频

歡迎光臨散文網(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)化的代碼的評論 (共 條)

分享到微博請遵守國家法律
汾西县| 明溪县| 青神县| 普洱| 大丰市| 信阳市| 星座| 宁强县| 鹿泉市| 阿巴嘎旗| 化德县| 白玉县| 扶风县| 湖南省| 灌南县| 漳浦县| 绵竹市| 达尔| 郑州市| 孝感市| 宁城县| 旬邑县| 芦山县| 舟曲县| 新田县| 兴文县| 屏南县| 法库县| 太仓市| 湖南省| 云阳县| 英吉沙县| 梧州市| 托里县| 南丹县| 广宗县| 屏东县| 庆阳市| 台江县| 阳东县| 榆社县|