C# 中的 Queue.Synchronized() 方法


C# 中的 Queue.Synchronized() 方法用于返回一个新的 Queue,该 Queue 封装原始 Queue,并且是线程安全的。

语法

语法如下 −

public static System.Collections.Queue Synchronized (System.Collections.Queue queue);

在上面,queue 参数是要同步的 Queue。

示例

让我们看一个示例 −

 实时演示

using System;
using System.Collections;
public class Demo {
   public static void Main(){
      Queue queue = new Queue();
      queue.Enqueue("AB");
      queue.Enqueue("BC");
      queue.Enqueue("CD");
      queue.Enqueue("DE");
      queue.Enqueue("EF");
      queue.Enqueue("FG");
      queue.Enqueue("GH");
      queue.Enqueue("HI");
      Console.WriteLine("Queue...");
      IEnumerator demoEnum = queue.GetEnumerator();
      while (demoEnum.MoveNext()){
         Console.WriteLine(demoEnum.Current);
      }
      Console.WriteLine("Is Queue synchronized? = "+queue.IsSynchronized);
      Queue queue2 = Queue.Synchronized(queue);
      Console.WriteLine("Is Queue synchronized now? = "+queue2.IsSynchronized);
   }
}

输出

这将产生以下输出 −

Queue...
AB
BC
CD
DE
EF
FG
GH
HI
Is Queue synchronized? = False
Is Queue synchronized now? = True

示例

现在我们来看另一个示例 −

 实时演示

using System;
using System.Collections;
public class Demo {
   public static void Main(){
      Queue queue = new Queue();
      queue.Enqueue(100);
      queue.Enqueue(200);
      queue.Enqueue(300);
      Console.WriteLine("Is Queue synchronized? = "+queue.IsSynchronized);
      Queue queue2 = Queue.Synchronized(queue);
      Console.WriteLine("Is Queue synchronized now? = "+queue2.IsSynchronized);
      Console.Write("Count of elements = ");
      Console.WriteLine(queue.Count);
      Console.WriteLine("Queue...");
      foreach(int i in queue){
         Console.WriteLine(i);
      }
      Console.WriteLine("Does the queue has element 500? = "+queue.Contains(500));
      int[] intArr = new int[5];
      intArr[0] = 1;
      intArr[1] = 2;
      intArr[2] = 3;
      intArr[3] = 4;
      queue.CopyTo(intArr, 1);
      Console.WriteLine("
Queue (Updated)");       foreach(int i in queue){          Console.WriteLine(i);       }       Console.WriteLine("
Array (Updated)");       foreach(int i in intArr){          Console.WriteLine(i);       }    } }

输出

这将产生以下输出 −

Is Queue synchronized? = False
Is Queue synchronized now? = True
Count of elements = 3
Queue...
100
200
300
Does the queue has element 500? = False
Queue (Updated)
100
200
300
Array (Updated)
1
100
200
300
0

更新于: 2019 年 12 月 3 日

149 个浏览

开启你的 职业生涯

完成课程即可获得认证

开始
广告