hk700wang 2014-08-12 01:48 采纳率: 0%
浏览 4050

java synchronized没有起作用

package com.wxb.syn;

class Semaphore{}

public class BalanceTest extends Thread{
public static int balance = 100;
public Semaphore semp = new Semaphore();
public void run() {
synchronized(this){
// System.out.println("balance=" + balance);
if(balance == 100) {
// try {
// sleep(1000);
// } catch (InterruptedException e) {
// // TODO Auto-generated catch block
// e.printStackTrace();
// }
balance = balance - 100;
System.out.println(balance);
System.out.println("withdraw 100 successful!");
}else{
System.out.println("failed");
}
}

}
public static void main(String[] args) {
    BalanceTest bt = new BalanceTest();
    bt.start();
    BalanceTest bt2 = new BalanceTest();
    bt2.start();
    BalanceTest bt3 = new BalanceTest();
    bt3.start();
    BalanceTest bt4 = new BalanceTest();
    bt4.start();
    BalanceTest bt5 = new BalanceTest();
    bt5.start();
    BalanceTest bt6 = new BalanceTest();
    bt6.start();
}

}

不加sleep只有一个successful,加了之后都成功synchronized好像不起作用

  • 写回答

1条回答 默认 最新

  • 天马321 2014-08-12 02:52
    关注

    问题应该是出在这一句:synchronized(this)
    搞个synchronized方法,run的时候调用它

    评论

报告相同问题?

悬赏问题

  • ¥15 有赏,i卡绘世画不出
  • ¥15 如何用stata画出文献中常见的安慰剂检验图
  • ¥15 c语言链表结构体数据插入
  • ¥40 使用MATLAB解答线性代数问题
  • ¥15 COCOS的问题COCOS的问题
  • ¥15 FPGA-SRIO初始化失败
  • ¥15 MapReduce实现倒排索引失败
  • ¥15 ZABBIX6.0L连接数据库报错,如何解决?(操作系统-centos)
  • ¥15 找一位技术过硬的游戏pj程序员
  • ¥15 matlab生成电测深三层曲线模型代码