成人午夜视频全免费观看高清-秋霞福利视频一区二区三区-国产精品久久久久电影小说-亚洲不卡区三一区三区一区

Java同步代碼塊沒效果,一個(gè)類中只能有一個(gè)同步方法或同步代碼塊

java同步代碼塊的問題?

synchronized void getName(){

創(chuàng)新互聯(lián)是一家專注于成都網(wǎng)站建設(shè)、成都做網(wǎng)站與策劃設(shè)計(jì),城廂網(wǎng)站建設(shè)哪家好?創(chuàng)新互聯(lián)做網(wǎng)站,專注于網(wǎng)站建設(shè)十載,網(wǎng)設(shè)計(jì)領(lǐng)域的專業(yè)建站公司;建站業(yè)務(wù)涵蓋:城廂等地區(qū)。城廂做網(wǎng)站價(jià)格咨詢:18980820575

//......代碼

}

等價(jià)于

void getName(){

synchronized(this){

//......代碼

}

}

不知道你說的是不是這個(gè)問題

Java多線程我用了同步代碼塊之后,為什么一直都是主線程在執(zhí)行,別的線程根本沒執(zhí)行?

你的synchronized將while循環(huán)都鎖住了,所以其中一個(gè)線程會(huì)將整個(gè)while循環(huán)執(zhí)行玩再走其他線程,但你的共享數(shù)據(jù)這時(shí)候已經(jīng)被循環(huán)至0了,所以只有一個(gè)線程在執(zhí)行

學(xué)java中,一個(gè)賣票程序,同步代碼塊 synchronized(){},沒起作用,依然輸出0和負(fù)號(hào)票,怎么回事?

你的這句話放在run方法里面了:Object b=new Object();

是局部變量,一直在變化,造成鎖一直在變化,所以出現(xiàn)了問題。

java同步代碼塊問題

1.把 synchronized (i) { 放在 while外面就沒問題的

2.同步代碼塊的原則之一是:盡量只包計(jì)算的部分。原則之二:計(jì)量要盡量避免其中包了sleep或者yield方法。sleep是為while服務(wù)的,如果把同步放在while之內(nèi),同步把sleep給包括了,那么sleep就沒有意義了。

我覺得這樣寫最好:

public void run() {

while (true) {

try {

Thread.sleep(1);

} catch (Exception e) {

e.printStackTrace();

}

synchronized (i) {

if (i 0) {

System.out.println(Thread.currentThread().getName()

+ " == " + i--);

}

}

}

}

Java中 synchronized沒有用,代碼如下。運(yùn)行結(jié)果如圖(不該出現(xiàn)非正數(shù))。謝謝高手解答?。?/h2>

package ergouge.thread.demo;

/*

nbsp;多線程模擬售票:三個(gè)窗口售票20張

nbsp;*/

class Ticket implements Runnable {

nbsp;nbsp;nbsp;nbsp;private int num = 20;

nbsp;nbsp;nbsp;nbsp;final String s = "hell";

nbsp;nbsp;nbsp;nbsp;public void run() { // 覆蓋run方法

nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;sell();

nbsp;nbsp;nbsp;nbsp;}

nbsp;nbsp;nbsp;nbsp;// 解決線程安全

nbsp;nbsp;nbsp;nbsp;public void sell() {

nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;// synchronized (new Object()) { // 同步代碼塊,防止多個(gè)線程進(jìn)入

nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;// 同步代碼塊,防止多個(gè)線程進(jìn)入

nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;while (num gt; 0) {

nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;// 放到這里也不行 synchronized(new Object()) { //

nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;// 同步代碼塊,防止多個(gè)線程進(jìn)入

nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;synchronized (s) {

nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;try {

nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;Thread.sleep(500);

nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;} catch (InterruptedException e) {

nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;} // 讓線程sleep 0.5秒,測(cè)試線程安全問題

nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;System.out.println(Thread.currentThread().getName() + "...sell ticket " + num--);

nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;}

nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;}

nbsp;nbsp;nbsp;nbsp;}

}

public class TicketSale {

nbsp;nbsp;nbsp;nbsp;public static void main(String[] args) {

nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;Ticket x = new Ticket();

nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;Thread t1 = new Thread(x);

nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;Thread t2 = new Thread(x);

nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;Thread t3 = new Thread(x);

nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;t1.start();

nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;t2.start();

nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;t3.start();

nbsp;nbsp;nbsp;nbsp;}

}

樓主你仔細(xì)看下我該了以后的代碼,先找到區(qū)別

有兩點(diǎn)樓主要注意:

一、synchronized(newObject())相當(dāng)于沒有同步,同步的是同一塊內(nèi)存地址,你這樣的話,每次都不是同一塊內(nèi)存地址,因此相當(dāng)于沒有同步

二、同步的范圍:同步的范圍不是越大越好,仔細(xì)想想看吧樓主,你的同步范圍太大了

名稱欄目:Java同步代碼塊沒效果,一個(gè)類中只能有一個(gè)同步方法或同步代碼塊
網(wǎng)站路徑:http://jinyejixie.com/article46/dsedhhg.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供企業(yè)網(wǎng)站制作、靜態(tài)網(wǎng)站、網(wǎng)站營銷網(wǎng)站改版、網(wǎng)站建設(shè)微信小程序

廣告

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

手機(jī)網(wǎng)站建設(shè)
和顺县| 普兰县| 平阴县| 大渡口区| 伊川县| 黔东| 罗山县| 历史| 阿坝| 泗洪县| 隆回县| 天台县| 建宁县| 天台县| 锡林浩特市| 隆回县| 怀安县| 西盟| 乐昌市| 胶州市| 栾城县| 铜梁县| 乐安县| 正安县| 和田市| 湖北省| 岑巩县| 竹北市| 大同市| 建宁县| 靖西县| 和静县| 定州市| 商城县| 波密县| 潞西市| 驻马店市| 资源县| 海盐县| 休宁县| 安阳县|