栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 面试经验 > 面试问答

为什么传递给可运行变量的变量必须是最终变量?

面试问答 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

为什么传递给可运行变量的变量必须是最终变量?

因为如果能够更改它们,可能会导致很多问题,请考虑以下事项:

public void count(){    int x;    new Thread(new Runnable()    {        public void run()        { while(x < 100) {     x++;     try     {         Thread.sleep(1000);     }catch(Exception e){} }        }     }).start();     // do some more pre...     for(x = 0;x < 5;x++)         for(int y = 0;y < 10;y++)  System.out.println(myArrayElement[x][y]); }

这是一个粗略的示例,但您可以看到可能发生许多无法解释的错误。这就是变量必须为最终变量的原因。这是解决上述问题的简单方法:

public void count(){    int x;    final int w = x;    new Thread(new Runnable()    {        public void run()        { int z = w; while(z < 100) {     z++;     try     {         Thread.sleep(1000);     }catch(Exception e){} }        }     }).start();     // do some more pre...     for(x = 0;x < 5;x++)         for(int y = 0;y < 10;y++)  System.out.println(myArrayElement[x][y]); }

如果您需要更完整的说明,则有点像同步。Java希望防止您从多个线程中引用一个对象。以下是有关同步的一些信息:

  • http://docs.oracle.com/javase/tutorial/essential/concurrency/sync.html

希望这对您有所帮助!



转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/569357.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号