沐白白白白
2016-02-27 06:46
采纳率: 57.1%
浏览 2.0k
已采纳

Java问题!!!求指教

public class Demo {
private static int i = 10;
public static void main(String args []){
new Thread(new Runnable() { @Override
public void run() {
i++;
i++; }
}).run();
System.out.println(i); }
}

输出是什么,原因呢....

  • 写回答
  • 好问题 提建议
  • 关注问题
  • 收藏
  • 邀请回答

11条回答 默认 最新

  • 买菜做饭 2016-02-27 07:20
    已采纳

    首先要说的此代码中并没有开启新线程,因为开启一个线程是调用start()方法,在这里只是调用了run()方法,就像调用一般方法一样,调用run()方法之后
    ,i变量进行了两次自增操作,所以最后输出结果为:12 而且一定是12 ,没有楼上那个人说的那样结果。

    已采纳该答案
    评论
    解决 无用
    打赏 举报
  • 孙振光 2016-02-27 06:57

    12,启动这个线程i即行了两次加加

    评论
    解决 无用
    打赏 举报
  • 护身符文 2016-02-27 07:08

    12,i是全局变量,整个类都是有作用的,经过一次i++,为11,在经过一次i++,为12,
    加入System.out.println(++i)时输出13,而System.out.println(i++)输出仍为12,这就是i++与++i的不同。

    评论
    解决 无用
    打赏 举报
  • threenewbee 2016-02-27 07:10

    System.out.println(i);这个可能先执行,也可能后执行,先执行输出10,后执行输出11或者12,结果不确定。

    评论
    解决 无用
    打赏 举报
  • Royal_lr 2016-02-27 07:11

    明显是12.。。线程启动,,i加了2次

    评论
    解决 无用
    打赏 举报
  • threenewbee 2016-02-27 07:16

    哦,看错了,结果是12,因为调用的是run,并没有启动新线程,所以是顺序执行。

    评论
    解决 无用
    打赏 举报
  • 买菜做饭 2016-02-27 07:26

    图片说明 就在我标红的地方调用了run()方法

    评论
    解决 无用
    打赏 举报
  • 护身符文 2016-02-27 07:30

    不知道,只觉得是这样的

    评论
    解决 无用
    打赏 举报
  • 侧耳_倾听 2016-02-27 08:39

    .start();................

    评论
    解决 无用
    打赏 举报
  • 追梦者Lea 2016-02-27 10:49

    多线程要调用start()方法,如果只调用run()方法就像调用普通方法一样,所以结果就是i自增两次,输出结果为12

    评论
    解决 无用
    打赏 举报
  • evan_man 2016-02-28 01:33

    12,肯定12;又不是开启线程,只是调用以下run方法,把它看成一个普通成员方法就行了;
    真正开启线程执行Thread.start(),这样才结果未知

    评论
    解决 无用
    打赏 举报

相关推荐 更多相似问题