并行多线程

时间:2015-02-18 08:52:46

标签: multithreading task

我想知道关于多个线程背靠背运行以及执行顺序如何流动。所以我刚刚创建了一个控制台应用程序来深入了解线程概念。

请找到代码

class Program
{
    static void Main(string[] args)
    {
        List<System.Threading.Tasks.Task> task = new List<System.Threading.Tasks.Task>();
        for(int i = 0 ; i<=100; i++)
        {
            System.Threading.Tasks.Task task1 = System.Threading.Tasks.Task.Run(() => Directory.CreateDirectory("D://Dummy"+i+""));
            task.Add(task1);
        }
        System.Threading.Tasks.Task.WaitAll(task.ToArray());
        foreach(var tasks in task)
        {
            Console.WriteLine("Task Id {0} IsCompleted {1} Status {2} IsFaulted {3} ", tasks.Id, tasks.IsCompleted, tasks.Status, tasks.IsFaulted);

        }
        Console.ReadLine();
    }
}

当我执行上面的代码时,我遇到了下面列出的一些查询

1)当我点击第一个for循环中的断点时,我能够创建文件夹,但是当我刚刚执行控制台时却没有。文件夹为最后一个迭代值创建(101)实际上最后一个值是100,但也不知道101是怎么来的?

2)线程处理的顺序不是按队列中的顺序随机进行的

1 个答案:

答案 0 :(得分:0)

如果你想在方法中使用synchronized关键字来运行线程 示例 -

public synchronized void methodName() {}