Monitor线程操作(当一个线程中处于等待状态时,另外一个线程来解锁它的等待状态继续执行下去)
来源:互联网 发布:指向数组元素的指针 编辑:程序博客网 时间:2024/05/21 10:22
代码
using System;using System.Collections.Generic;using System.Linq;using System.Text;using System.Threading;namespace ConsoleApplication1{ class Program { static int x = 0; private static object _obj = new object(); static void Main(string[] args) { for (int i = 0; i < 1; i++) { Thread thread = new Thread(new ThreadStart(test)); thread.Start(); } Thread.Sleep(2000); Thread thread1 = new Thread(new ThreadStart(test1)); thread1.Start(); Thread.Sleep(2000); Thread thread2 = new Thread(new ThreadStart(test)); thread2.Start(); Thread.Sleep(2000); Thread thread3 = new Thread(new ThreadStart(test3)); thread3.Start(); Console.ReadKey(); } static void test() { try { Monitor.Enter(_obj); if (x > 0) { Console.WriteLine("开始等待"); Monitor.Wait(_obj); // Monitor.Wait(_obj, 5000);这是我设置的等待5秒继续执行 Console.WriteLine("线程3释放了锁定对象,等待已结束,现在退出!"); } x--; Console.WriteLine(x); Console.WriteLine(Thread.CurrentThread.ManagedThreadId.ToString()); } catch (Exception ex) { throw; } finally { Monitor.Pulse(_obj); Monitor.Exit(_obj); } } static void test1() { x = 2; } static void test3() { Console.WriteLine("线程3进入,开始释放锁定对象!"); Monitor.Enter(_obj); Monitor.Pulse(_obj); Monitor.Exit(_obj); Console.WriteLine("线程3已释放了锁定对象!"); } }}
0 0
- Monitor线程操作(当一个线程中处于等待状态时,另外一个线程来解锁它的等待状态继续执行下去)
- 控制台创建两个线程,等待一个线程的结束,执行另外一线程
- 如何等待一个线程完成后才继续执行之后的操作
- Java线程的等待状态
- 线程进入等待状态
- java中一个线程等待另一个线程执行完后再执行
- CountDownLatch,一个同步辅助类,在完成一组正在其他线程中执行的操作之前,它允许一个或多个线程一直等待
- JAVA多线程—CountDownLatch-一个同步辅助类,在完成一组正在其他线程中执行的操作之前,它允许一个或多个线程一直等待。
- 等待一个线程的结束
- 用 QueueUserAPC() 函数来强制线程退出等待状态
- 多个线程共同的等待一个操作
- 多线程中主线程等待所有子线程执行完再继续执行的解决方法
- 线程进入等待状态有几种方式?
- 利用信号量使线程进入等待状态
- 线程等待执行完毕
- 多线程的一个问题(线程等待的问题)
- Windows APC机制 & 可警告alertable的线程等待状态
- Win32多线程之等待一个线程的结束(WaitForSingleObject)
- Hadoop Shuffle
- Android—压缩图片,减少内存
- POJ-1942-Paths on a Grid-组合数学
- 【POJ2421】【最小生成树水题】【prim】
- sql server和mysql server sql语句对比
- Monitor线程操作(当一个线程中处于等待状态时,另外一个线程来解锁它的等待状态继续执行下去)
- Spring MVC控制层redirect
- 经典算法研究系列:九、图像特征提取与匹配之SIFT算法
- WINDOWS 内存管理笔记
- JDBC ORACLE 数据库隔离级别
- AndroidUniversalImageLoader使用详解
- Rust之语法<2>函数
- Git从远程的分支获取最新的版本到本地
- MySql 字符串时间转换 和 中文乱码