递归调用线程方法(System.Threading)是不好的做法吗?

迈克·马克斯

原谅我的术语,我不是很熟悉System.Threading,但是如果我有以下内容:

private static int _index;
private static List<int> _movieIds = new List<int>();

static void Main(string[] args)
{
    // the below call populates the _movieIds list variable with around 130,000 ints
    GetListOfMovieIdsFromDatabase(); 

    _index = 0;
    Thread myThread = new Thread(DoWork);
    myThread.Start();
}

public static void DoWork()
{
     // do something with the value of _index (iterate through the _movieIds list) then recursively call DoWork() again

     Thread.Sleep(400);

     _index++;

     DoWork();
}

这是不好的做法吗?我正在遍历int's在类级别定义为成员的私有静态列表,因此的第一次迭代DoWork()将使用_index(为了简单起见,我没有解释的方式)的第一个值,然后是第二次迭代(递归调用)将与第二个值一起使用_index,依此类推。

我之所以这样问,是因为在运行该应用程序约12小时后,我遇到了堆栈溢出异常,我相信这是由于递归调用。

安迪

是的。最终,您总是会出现堆栈溢出的情况,因为调用堆栈永远不会有展开的机会。

与其index通过递归调用增加变量,不如在线程中使用循环。

public static void DoWork()
{
     while(true)
     {    
          // do something with the value of _index (iterate through the _movieIds list) then recursively call DoWork() again

         Thread.Sleep(400);

         _index++;

         // break when a condition is met   
      }
}

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

递归调用线程方法(System.Threading)是不好的做法吗?

来自分类Dev

在AJAX调用中解析是不好的做法吗?

来自分类Dev

在AJAX调用中解析是不好的做法吗?

来自分类Dev

这种布尔方法是不好的做法吗?

来自分类Dev

类方法返回`this`是不好的做法吗?

来自分类Dev

Java抽象方法:这是不好的做法吗?

来自分类Dev

这种布尔方法是不好的做法吗?

来自分类Dev

为什么使用System.Threading.Thread.Sleep()是不好的做法?

来自分类Dev

在shell程序中调用system()是不好的做法吗?

来自分类Dev

在共享库中创建线程是不好的做法吗?

来自分类Dev

在这里通过引用线程传递是不好的做法吗?

来自分类Dev

在方法中返回可迭代对象是不好的做法吗?

来自分类Dev

使用“”是不好的做法吗?方法名称中?

来自分类Dev

使用“”是不好的做法吗?在球拍方法名称中?

来自分类Dev

使用“”是不好的做法吗?方法名称中?

来自分类Dev

C#在声明它的类中调用抽象方法是不好的做法吗?

来自分类Dev

在调用方法内部声明变量是一种不好的做法吗?

来自分类Dev

C#在声明它的类中调用抽象方法是不好的做法吗?

来自分类Dev

将线程局部值保存在静态final字段中是一种不好的做法吗?

来自分类Dev

将数组定义为函数调用的一部分是不好的做法吗?

来自分类Dev

在析构函数中调用观察者是一种不好的做法吗?

来自分类Dev

调用UICollectionView.reloadData()是不好的做法吗?如果是这样,为什么?

来自分类Dev

在JS函数中调用一堆HTML是不好的做法吗?

来自分类Dev

在C ++中从构造函数中显式地调用析构函数是不好的做法吗?

来自分类Dev

在Java中,使用Runtime Exception作为通过函数调用的超级“突破”是不好的做法吗?

来自分类Dev

直接调用Future#get(time,timeunit)(不检查isDone())是一种不好的做法吗?

来自分类Dev

在JS函数中调用一堆HTML是不好的做法吗?

来自分类Dev

从Dagger Module方法调用inject()-不好的做法?

来自分类Dev

直接调用run方法是不好的做法

Related 相关文章

  1. 1

    递归调用线程方法(System.Threading)是不好的做法吗?

  2. 2

    在AJAX调用中解析是不好的做法吗?

  3. 3

    在AJAX调用中解析是不好的做法吗?

  4. 4

    这种布尔方法是不好的做法吗?

  5. 5

    类方法返回`this`是不好的做法吗?

  6. 6

    Java抽象方法:这是不好的做法吗?

  7. 7

    这种布尔方法是不好的做法吗?

  8. 8

    为什么使用System.Threading.Thread.Sleep()是不好的做法?

  9. 9

    在shell程序中调用system()是不好的做法吗?

  10. 10

    在共享库中创建线程是不好的做法吗?

  11. 11

    在这里通过引用线程传递是不好的做法吗?

  12. 12

    在方法中返回可迭代对象是不好的做法吗?

  13. 13

    使用“”是不好的做法吗?方法名称中?

  14. 14

    使用“”是不好的做法吗?在球拍方法名称中?

  15. 15

    使用“”是不好的做法吗?方法名称中?

  16. 16

    C#在声明它的类中调用抽象方法是不好的做法吗?

  17. 17

    在调用方法内部声明变量是一种不好的做法吗?

  18. 18

    C#在声明它的类中调用抽象方法是不好的做法吗?

  19. 19

    将线程局部值保存在静态final字段中是一种不好的做法吗?

  20. 20

    将数组定义为函数调用的一部分是不好的做法吗?

  21. 21

    在析构函数中调用观察者是一种不好的做法吗?

  22. 22

    调用UICollectionView.reloadData()是不好的做法吗?如果是这样,为什么?

  23. 23

    在JS函数中调用一堆HTML是不好的做法吗?

  24. 24

    在C ++中从构造函数中显式地调用析构函数是不好的做法吗?

  25. 25

    在Java中,使用Runtime Exception作为通过函数调用的超级“突破”是不好的做法吗?

  26. 26

    直接调用Future#get(time,timeunit)(不检查isDone())是一种不好的做法吗?

  27. 27

    在JS函数中调用一堆HTML是不好的做法吗?

  28. 28

    从Dagger Module方法调用inject()-不好的做法?

  29. 29

    直接调用run方法是不好的做法

热门标签

归档