为了账号安全,请及时绑定邮箱和手机立即绑定

Java中实现Runnable接口的类使用for循环时不能处理同一个对象资源?

Java中实现Runnable接口的类使用for循环时不能处理同一个对象资源?

茅侃侃 2019-03-13 18:14:15
在学习Java的多线程,看到Runnable接口的时候写了一段小代码,有点搞不懂了Runnable接口相比Thread类,可以实现对象资源共享我的代码是用for循环让多个线程数数,共10个数字,三个线程一起数结果三个线程给我数出30个数字来了我找过网上的博文,他们写的是卖票程序多个售票点(线程)一起售卖总共100张票我和他的代码进行对比,唯一的区别在于,循环计数时我用的是for循环,他用的是while于是我就修改了一下代码,发现用while循环就能实现我希望的:三个进程一起数10个数虽然实现了需求,但是我有疑问,为什么用for就会数出30个数?请各位高手赐教,谢谢!代码如下:for循环的:class Test22_06 implements Runnable{    public void run(){        for(int i=0; i<11; i++){            System.out.println("线程" + Thread.currentThread().getName() + "数了第" + i + "个数字。");        }    }}public class JavaTest22_06{    public static void main(String args[]){        Test22_06 t = new Test22_06();        new Thread(t).start();        new Thread(t).start();        new Thread(t).start();    }}while循环的:class Test22_06 implements Runnable{    int i = 0;    public void run(){        while(i<11){            System.out.println("线程" + Thread.currentThread().getName() + "数了第" + (i++) + "个数字。");        }    }}public class JavaTest22_06{    public static void main(String args[]){        Test22_06 t = new Test22_06();        new Thread(t).start();        new Thread(t).start();        new Thread(t).start();    }}
查看完整描述

1 回答

?
沧海一幻觉

TA贡献1824条经验 获得超5个赞

一个i是类的成员变量,


 int i = 0;

    public void run(){

        while(i<11){

            ...

        }

    }

一个i是for循环的局部变量


        for(int i=0; i<11; i++){

            ...

        }


查看完整回答
反对 回复 2019-04-15
  • 1 回答
  • 0 关注
  • 397 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信