public class TestSyncTest {
public static void main(String[] args) {
TestSync job = new TestSync();
Thread jia = new Thread(job);
Thread yi = new Thread(job);
jia.setName("甲");
yi.setName("乙");
jia.start();
yi.start();
}
}
class TestSync implements Runnable {
private int balance;
public void run() {
for (int i = 0; i < 30; i++) {
increment();
System.out.println("余额为 :" + balance + "---------"+ Thread.currentThread().getName() +"在操作");
}
}
public synchronized void increment() {
int i = balance;// 余额
balance = i + 1;
}
}
为什么输出来 并不是同步的
控制台输出结果??????????????
余额为 :1---------甲在操作
余额为 :2---------乙在操作
余额为 :4---------乙在操作
余额为 :5---------乙在操作
余额为 :3---------甲在操作
余额为 :6---------乙在操作
余额为 :7---------甲在操作
余额为 :8---------乙在操作
余额为 :9---------甲在操作
余额为 :11---------甲在操作
余额为 :12---------甲在操作
余额为 :13---------甲在操作
余额为 :14---------甲在操作
余额为 :15---------甲在操作
余额为 :16---------甲在操作
余额为 :17---------甲在操作
余额为 :18---------甲在操作
余额为 :19---------甲在操作
余额为 :20---------甲在操作
余额为 :21---------甲在操作
余额为 :22---------甲在操作
余额为 :23---------甲在操作
余额为 :24---------甲在操作
余额为 :25---------甲在操作
余额为 :26---------甲在操作
余额为 :27---------甲在操作
余额为 :28---------甲在操作
余额为 :29---------甲在操作
余额为 :30---------甲在操作
余额为 :31---------甲在操作
余额为 :32---------甲在操作
余额为 :33---------甲在操作
余额为 :34---------甲在操作
余额为 :35---------甲在操作
余额为 :36---------甲在操作
余额为 :10---------乙在操作
余额为 :37---------乙在操作
余额为 :38---------乙在操作
余额为 :39---------乙在操作
余额为 :40---------乙在操作
余额为 :41---------乙在操作
余额为 :42---------乙在操作
余额为 :43---------乙在操作
余额为 :44---------乙在操作
余额为 :45---------乙在操作
余额为 :46---------乙在操作
余额为 :47---------乙在操作
余额为 :48---------乙在操作
余额为 :49---------乙在操作
余额为 :50---------乙在操作
余额为 :51---------乙在操作
余额为 :52---------乙在操作
余额为 :53---------乙在操作
余额为 :54---------乙在操作
余额为 :55---------乙在操作
余额为 :56---------乙在操作
余额为 :57---------乙在操作
余额为 :58---------乙在操作
余额为 :59---------乙在操作
余额为 :60---------乙在操作