这是一个关于线程的问题:
如果一个在main()方法里定义了一个sleep()比如一秒,而线程运行一个用 synchronized 修饰的 run() 。run()主要是对一个数字进行递增,并且递增后进行sleep()100毫秒(按照这个设定,通过无限循环,也就是说每个线程最多可以递增10次)。在main()中是以for循环5次来 execute()线程的,那么为什么结果会是,5个线程分别都递增了10次(因为run()方法被synchronized修饰了,所以只要当前线程没有解锁,其他线程又怎么能访问呢?)?
如果一个在main()方法里定义了一个sleep()比如一秒,而线程运行一个用 synchronized 修饰的 run() 。run()主要是对一个数字进行递增,并且递增后进行sleep()100毫秒(按照这个设定,通过无限循环,也就是说每个线程最多可以递增10次)。在main()中是以for循环5次来 execute()线程的,那么为什么结果会是,5个线程分别都递增了10次(因为run()方法被synchronized修饰了,所以只要当前线程没有解锁,其他线程又怎么能访问呢?)?
具体代码,我怕你们不肯看。