java多线程。。。。。

为什么结果会出现负的情况?
public class MyThreadTest {
public static void main(String[] args) {
MyThread m=new MyThread();
Thread t1=new Thread(m,"线程1");
Thread t2=new Thread(m,"线程2");
Thread t3=new Thread(m,"线程3");
Thread t4=new Thread(m,"线程4");
t1.start();
t2.start();
t3.start();
t4.start();}
}class MyThread implements Runnable{
private int sum=10;
private Object lock=new Object();
@Overridepublic void run() {
    while(sum>0) {    
      //锁        
      synchronized (lock) {         
         System.out.println(Thread.currentThread().getName()+" "+sum);        
             sum--;        
             }        
             }        
             }    
             }


莫回无
浏览 710回答 1
1回答

慕盖茨4494581

lock要用全局对象。不然各个线程各自减sum
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Java