这段代码,多个请求同时进这个方法,但是锁不住线程是怎么回事

这段代码,多个请求同时进这个方法,但是锁不住线程是怎么回事,线程没排队执行,很疑惑,求大佬解答,服务器tomcatd

打印的信息:

线程线程:http-apr-8080-exec-4执行了4次循环后,其他线程就插队进来了,很疑惑,求解答

多个请求,按道理进入同一个方法每次都算一个新线程

 

要锁应该是同一线程进行?

把同步的东西放到代码块中,再用syn加对象锁

那应该是配置问题启动多次了,实在不行用分布式锁也能解决

是挺奇怪的,打印日志不是异步的吧

看看对象实例是否只有一个

是不是每个线程创建了自己的对象实例

class Count {
    int l=0;
    synchronized void printChar(char c) {
        for (int i = 1; i <= 10; i++) {
            System.out.println(i+":"+c);
            try {
                Thread.sleep(1000);
            } catch (InterruptedException e) {
                // TODO Auto-generated catch block
                e.printStackTrace();
            }
        }

    }
}

class MyThread1 extends Thread {
    Count c;

    MyThread1(Count c) {
        this.c = c;
    }

    public void run() {
        c.printChar('a');
    }

}

class MyThread2 extends Thread {
    Count c;

    MyThread2(Count c) {
        this.c = c;
    }

    public void run() {
        c.printChar('b');
    }
}

public class WithSynchronization {
    public static void main(String args[]) {
        Count obj = new Count();// only one object
        Count obj2 = new Count();// only one object
        MyThread1 t1 = new MyThread1(obj);
        MyThread2 t2 = new MyThread2(obj2);
        t1.start();
        t2.start();
    }
}

1:a
1:b
2:b
2:a
3:b
3:a
4:b
4:a
5:b
5:a
6:a
6:b
7:a
7:b
8:a
8:b
9:a
9:b
10:a
10:b