java代碼塊用法 java 構(gòu)造代碼塊

JAVA 中的 synchronized 代碼塊用法

Java語(yǔ)言的關(guān)鍵字,當(dāng)它用來(lái)修飾一個(gè)方法或者一個(gè)代碼塊的時(shí)候,能夠保證在同一時(shí)刻最多只有一個(gè)線程執(zhí)行該段代碼。

創(chuàng)新互聯(lián)服務(wù)項(xiàng)目包括西平網(wǎng)站建設(shè)、西平網(wǎng)站制作、西平網(wǎng)頁(yè)制作以及西平網(wǎng)絡(luò)營(yíng)銷(xiāo)策劃等。多年來(lái),我們專(zhuān)注于互聯(lián)網(wǎng)行業(yè),利用自身積累的技術(shù)優(yōu)勢(shì)、行業(yè)經(jīng)驗(yàn)、深度合作伙伴關(guān)系等,向廣大中小型企業(yè)、政府機(jī)構(gòu)等提供互聯(lián)網(wǎng)行業(yè)的解決方案,西平網(wǎng)站推廣取得了明顯的社會(huì)效益與經(jīng)濟(jì)效益。目前,我們服務(wù)的客戶(hù)以成都為中心已經(jīng)輻射到西平省份的部分城市,未來(lái)相信會(huì)繼續(xù)擴(kuò)大服務(wù)區(qū)域并繼續(xù)獲得客戶(hù)的支持與信任!

一、當(dāng)兩個(gè)并發(fā)線程訪問(wèn)同一個(gè)對(duì)象object中的這個(gè)synchronized(this)同步代碼塊時(shí),一個(gè)時(shí)間內(nèi)只能有一個(gè)線程得到執(zhí)行。另一個(gè)線程必須等待當(dāng)前線程執(zhí)行完這個(gè)代碼塊以后才能執(zhí)行該代碼塊。

二、然而,當(dāng)一個(gè)線程訪問(wèn)object的一個(gè)synchronized(this)同步代碼塊時(shí),另一個(gè)線程仍然可以訪問(wèn)該object中的非synchronized(this)同步代碼塊。

三、尤其關(guān)鍵的是,當(dāng)一個(gè)線程訪問(wèn)object的一個(gè)synchronized(this)同步代碼塊時(shí),其他線程對(duì)object中所有其它synchronized(this)同步代碼塊的訪問(wèn)將被阻塞。

四、第三個(gè)例子同樣適用其它同步代碼塊。也就是說(shuō),當(dāng)一個(gè)線程訪問(wèn)object的一個(gè)synchronized(this)同步代碼塊時(shí),它就獲得了這個(gè)object的對(duì)象鎖。結(jié)果,其它線程對(duì)該object對(duì)象所有同步代碼部分的訪問(wèn)都被暫時(shí)阻塞。

五、以上規(guī)則對(duì)其它對(duì)象鎖同樣適用.

java中詳解靜態(tài)代碼塊,構(gòu)造代碼塊,構(gòu)造方法。求簡(jiǎn)單易懂的解釋

靜態(tài)代碼塊:只要一用到某個(gè)類(lèi),那么這個(gè)類(lèi)的靜態(tài)代碼塊就先執(zhí)行,比如:

public class Dog(){

int i = 0;

static {

i = 1;

}

public Dog(){

i = 2;

}

}當(dāng)你new 一個(gè)Dog()對(duì)象時(shí),首先i=

1 會(huì)執(zhí)行,然后才執(zhí)行

public Dog(){}這個(gè)方法。

pulic

Dog() 是與類(lèi)同名、沒(méi)有返回值的方法,也就是構(gòu)造方法。

構(gòu)造方法的作用是用來(lái)初始化一個(gè)對(duì)象的。比如你可以在里面寫(xiě)

i

=

2;

那么當(dāng)你 Dog

d

=

new

Dog()執(zhí)行這段代碼的時(shí)候,是這樣的:

首先

i

=

;

然后執(zhí)行static 靜態(tài)代碼塊,此時(shí)i=

1;

最后執(zhí)行public

Dog();

i

=

2;

Java常見(jiàn)代碼塊的作用與區(qū)別

1. 局部代碼塊

作用在方法當(dāng)中,作用是控制變量的生命周期:

public void show(){

{

System.out.println("局部代碼塊運(yùn)行!");

}

}123456

在程序中當(dāng)我們定義完成一個(gè)局部變量x之后,并且在接下來(lái)的代碼中,不想再用到它時(shí),那么就沒(méi)必要讓x在內(nèi)存中繼續(xù)占用空間。因此就有了局部代碼塊。

2. 構(gòu)造代碼塊

作用在類(lèi)的定義Body中,作用是給類(lèi)的部分字段統(tǒng)一初始化:

public class Apple {

private String size;

//構(gòu)造代碼塊

{

System.out.println("構(gòu)造代碼塊運(yùn)行!");

size = "E";

}

}

12345678910

構(gòu)造代碼塊與構(gòu)造函數(shù)的區(qū)別是:構(gòu)造代碼塊是給所有對(duì)象進(jìn)行統(tǒng)一初始化,而構(gòu)造函數(shù)是給對(duì)應(yīng)的對(duì)象初始化,因?yàn)闃?gòu)造函數(shù)是可以多個(gè)的,運(yùn)行哪個(gè)構(gòu)造函數(shù)就會(huì)建立什么樣的對(duì)象,但無(wú)論建立哪個(gè)對(duì)象,都會(huì)先執(zhí)行相同的構(gòu)造代碼塊。也就是說(shuō),構(gòu)造代碼塊中定義的是不同對(duì)象共性的初始化內(nèi)容。所以理所當(dāng)然的,構(gòu)造代碼塊在構(gòu)造函數(shù)之前執(zhí)行。

3. 靜態(tài)代碼塊

作用有兩個(gè):

(1)給類(lèi)的靜態(tài)變量賦值;

(2)聲明靜態(tài)變量;

作用在類(lèi)的Body中,對(duì)類(lèi)中的靜態(tài)變量初始化:

public class APP {

static int x, y; // 靜態(tài)變量

static {

x = 5; // 給靜態(tài)變量x賦值

}

public static void myMethod() {

y = x++ + ++x; // x++ 先使用x的值再加1;++x先加1再使用x的值

}

public static void main(String[] args) {

x--;

myMethod();

System.out.println(x + y + ++x);

}

}

輸出:23

java構(gòu)造代碼塊的作用是什么?

//構(gòu)造塊:直接在類(lèi)中定義且沒(méi)有加static關(guān)鍵字的代碼塊稱(chēng)為{}構(gòu)造代碼塊。構(gòu)造代碼塊在創(chuàng)建對(duì)象時(shí)被調(diào)用,每次創(chuàng)建對(duì)象都會(huì)被調(diào)用,并且構(gòu)造代碼塊的執(zhí)行次序優(yōu)先于類(lèi)構(gòu)造函數(shù)。\x0d\x0a\x0d\x0apublic class CodeBlock02\x0d\x0a{\x0d\x0a\x0d\x0a {\x0d\x0a\x0d\x0a System.out.println("第一代碼塊");\x0d\x0a \x0d\x0a }\x0d\x0a\x0d\x0apublic CodeBlock02(){\x0d\x0a System.out.println("構(gòu)造方法");\x0d\x0a }\x0d\x0a \x0d\x0a {\x0d\x0a\x0d\x0a System.out.println("第二構(gòu)造塊");\x0d\x0a }\x0d\x0a public static void main(String[] args){\x0d\x0a new CodeBlock02();\x0d\x0a new CodeBlock02();\x0d\x0a new CodeBlock02();\x0d\x0a \x0d\x0a }\x0d\x0a} \x0d\x0a\x0d\x0a/**\x0d\x0a執(zhí)行結(jié)果:\x0d\x0a第一代碼塊\x0d\x0a第二構(gòu)造塊\x0d\x0a構(gòu)造方法\x0d\x0a第一代碼塊\x0d\x0a第二構(gòu)造塊\x0d\x0a構(gòu)造方法\x0d\x0a第一代碼塊\x0d\x0a第二構(gòu)造塊\x0d\x0a構(gòu)造方法*/

網(wǎng)站標(biāo)題:java代碼塊用法 java 構(gòu)造代碼塊
本文URL:http://www.muchs.cn/article0/dohscio.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供網(wǎng)站導(dǎo)航用戶(hù)體驗(yàn)、域名注冊(cè)、面包屑導(dǎo)航、App開(kāi)發(fā)做網(wǎng)站

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶(hù)投稿、用戶(hù)轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請(qǐng)盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如需處理請(qǐng)聯(lián)系客服。電話(huà):028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來(lái)源: 創(chuàng)新互聯(lián)

網(wǎng)站建設(shè)網(wǎng)站維護(hù)公司