平凡的L同学 2016-11-27 14:01 采纳率: 60%
浏览 1432
已采纳

关于java多线程的一个问题(为什么下面这个代码不是按照0~99顺序输出的?明明加锁了啊。。)

public class Test {

/**
 * @param args
 */
public static void main(String[] args) {
    // TODO Auto-generated method stub
    for(int i=0;i<10;i++){
        MyThread myThread=new MyThread();
        myThread.start();
        try {
            myThread.sleep(1);
        } catch (InterruptedException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }
    }
}

}
class MyThread extends Thread{

@Override
public synchronized void  run() 
{
    // TODO Auto-generated method stub
    for(int i=0;i<100;i++)
    {
        System.out.println(i);
    }
}

}


  • 写回答

10条回答

  • hxy15918436902 2016-11-28 03:16
    关注

    你这样的写法根本就不涉及线程安全的问题,这十个线程都是运行各自的方法,根本就没有互斥的资源。你应该创建一个类,用十个线程分别调用那个类的同一个对象的同一个方法,这样你就会得到你想要的效果了。

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(9条)

报告相同问题?

悬赏问题

  • ¥15 求差集那个函数有问题,有无佬可以解决
  • ¥15 【提问】基于Invest的水源涵养
  • ¥20 微信网友居然可以通过vx号找到我绑的手机号
  • ¥15 寻一个支付宝扫码远程授权登录的软件助手app
  • ¥15 解riccati方程组
  • ¥15 display:none;样式在嵌套结构中的已设置了display样式的元素上不起作用?
  • ¥15 使用rabbitMQ 消息队列作为url源进行多线程爬取时,总有几个url没有处理的问题。
  • ¥15 Ubuntu在安装序列比对软件STAR时出现报错如何解决
  • ¥50 树莓派安卓APK系统签名
  • ¥65 汇编语言除法溢出问题