任意一个线程调用了 _barrier.SignalAndWait() 方法后,会执行一个回调函数来打印出阶段。

 /// <summary>
/// 实例 Barrier 类
/// </summary>
public static Barrier _barrier = new Barrier(, b => Console.WriteLine($"第 {b.CurrentPhaseNumber + 1} 阶段结束")); /// <summary>
/// 向 Barrier 发送信号
/// </summary>
/// <param name="name"></param>
/// <param name="message"></param>
/// <param name="seconds"></param>
public static void PlayMusic(string name, string message, int seconds)
{
for (int i = ; i < ; i++)
{
Console.WriteLine("------------------------"); System.Threading.Thread.Sleep(TimeSpan.FromSeconds(seconds));
Console.WriteLine($"{name} 开始 {message}"); System.Threading.Thread.Sleep(TimeSpan.FromSeconds(seconds));
Console.WriteLine($"{name} 结束 {message}"); // 回调函数 打印出阶段
_barrier.SignalAndWait();
}
}

每个线程将向 Barrier 发送两次信号,所以会有两个阶段,可以在每个迭代结束前执行一些计算。当最后一个线程调用 SignalAndWait方法时可以在迭代结束时进行交互。

 /// <summary>
/// 执行
/// </summary>
public static void Implement()
{
var t1 = new System.Threading.Thread(() => PlayMusic("吉他手", "奏曲", )); var t2 = new System.Threading.Thread(() => PlayMusic("歌手", "唱他的歌", )); t1.Start();
t2.Start();
}

输出结果:

最新文章

  1. HTML5 Boilerplate - 让页面有个好的开始
  2. 学习RBAC 用户&#183;角色&#183;权限&#183;表
  3. hive0.12 rcfile gzip 测试
  4. 2016 - 1- 22 Build a Nav bar (intro to HTML&amp;CSS)
  5. Vue.js 学习笔记 一
  6. [认证授权] 5.OIDC(OpenId Connect)身份认证授权(扩展部分)
  7. Java注解(3)-注解处理器(编译期|RetentionPolicy.SOURCE)
  8. jquery 表双击某行时,取出某行中各列的数值.
  9. pwnable.tw dubblesort
  10. centos7.5 安装mysql8.0
  11. JMeter&#160;java.net.SocketException:Operationnotsupported:connect解决方案
  12. BZOJ.5249.[九省联考2018]iiidx(贪心 线段树)
  13. 初始Java
  14. VS2015安装及单元测试
  15. Java开发万年历
  16. 用flask和长轮询实现对帅哥投票和实时查看票数
  17. 用开源项目CropImage实现图片的裁剪(不推荐)
  18. 【经验】STL的list vector在iterator迭代器的循环中 使用erase 造成的BUG
  19. 第十章 消息驱动的微服务: Spring Cloud Stream
  20. SonarQube安装

热门文章

  1. [Caliburn.Micro专题][1]快速入门
  2. 基于Docker实现MySQL主从复制
  3. pandas 之 交叉表-透视表
  4. Java内存模型。
  5. apache配置项
  6. 使用Nginx+Openresty实现WAF功能
  7. E10【选款式】I don&#39;t like that style
  8. Linux命令——trap
  9. luoguP2260 [清华集训2012]模积和
  10. Mysql数据库基础命令