我想知道关于多个线程背靠背运行以及执行顺序如何流动。所以我刚刚创建了一个控制台应用程序来深入了解线程概念。
请找到代码
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)线程处理的顺序不是按队列中的顺序随机进行的
答案 0 :(得分:0)
如果你想在方法中使用synchronized关键字来运行线程 示例 -
public synchronized void methodName() {}