一个线程同步问题
最近在学java 看到线程同步的时候遇到这样一个问题 代码如下:
public class BasicThread {
private int count = 0;
public BasicThread() {
new IncreateThread().start();
new printThread().start();
}
/**
* 以下两个函数以同步的方式访问count
*
*/
private synchronized void increate() {
count++;
MyTools.sleep(100);// 包装了Thread.sleep(100)
}
private synchronized void myPrintln() {
System.out.println(count);
MyTools.sleep(100);
}
/**
* 以下两个线程分别调用上边的函数
*
*
*/
class IncreateThread extends Thread {
public void run() {
while (true) {
increate();
}
}
}
class printThread extends Thread {
public void run() {
while (true) {
myPrintln();
}
}
}
public static void main(String[] args) {
new BasicThread();
}
}
按理说IncreateThread启动以后就进入increate函数、进入了while死循环 也就取得了对象机锁。另一个线程printThread就不可能有机会执行myPrintln函数。但是结果恰恰相反,请高手指教。。。。。