多线程11-AutoResetEvent

class Program
    {
        private static AutoResetEvent workEvent = new AutoResetEvent(false);
        private static AutoResetEvent mainEvnet = new AutoResetEvent(false);
        static void Process(int second)
        {
            Console.WriteLine("a long run");
            Thread.Sleep(second);
            Console.WriteLine("work is done");
            workEvent.Set();
            Console.WriteLine("Wait for a main Thread to complete the work");
            mainEvnet.WaitOne();
            Console.WriteLine("starting second opeartion...");
            Thread.Sleep(5000);
            Console.WriteLine("Work is done");
            workEvent.Set();
        }
        static void Main()
        {
            var t = new Thread(() => Process(10));
            t.Start();
            Console.WriteLine("wait for another thread to complete work");
            workEvent.WaitOne();
            Console.WriteLine("First Operation is Complete");
            Console.WriteLine("Peffoming an operation on a mian thread");
            Thread.Sleep(TimeSpan.FromSeconds(5));
            mainEvnet.Set();
            Console.WriteLine("Now Runing the second Opeartion on an second thread");
            workEvent.WaitOne();
            Console.WriteLine("second opeartion is completed!");
        }
    }

时间: 2024-10-13 07:20:42

多线程11-AutoResetEvent的相关文章

[Xcode10 实际操作]八、网络与多线程-(11)使用同步Post方式查询IP地址信息

本文将演示如何通过Post请求,同步获取IP地址信息. 一旦发送同步请求,程序将停止用户交互,直至服务器返回数据. 在项目导航区,打开视图控制器的代码文件[ViewController.swift] 1 import UIKit 2 3 class ViewController: UIViewController { 4 5 //给当前视图控制器类,添加一个标签属性. 6 //该标签对象,将用来显示远程服务器返回的信息 7 var label = UILabel() 8 9 override f

Java多线程11:ReentrantLock的使用和Condition

ReentrantLock ReentrantLock,一个可重入的互斥锁,它具有与使用synchronized方法和语句所访问的隐式监视器锁相同的一些基本行为和语义,但功能更强大. ReentrantLock基本用法 先来看一下ReentrantLock的基本用法: public class ThreadDomain38 { private Lock lock = new ReentrantLock(); public void testMethod() { try { lock.lock()

java 多线程11:volatile关键字

直接先举一个例子普通的线程实例变量的非可见性: public class MyThread28 extends Thread { private boolean isRunning = true; public boolean isRunning() { return isRunning; } public void setRunning(boolean isRunning) { this.isRunning = isRunning; } public void run() { System.o

11.多线程&&并发

11.1 操作系统中线程和进程的概念 一些常见的概念: 程序:指令和数据的byte序列,eg:qq.exe;a2. 进程:正在运行的程序(如QQ);a3.一个进程中可能有一到多个线程. 线程的概念:Thread 每个正在系统上运行的程序都是一个进程.每个进程包含一到多个线程.进程也可能是整个程序或者是部分程序的动态执行.线程是一组指令的集合,或者是程序的特殊段,它可以在程序里独立执行.也可以把它理解为代码运行的上下文.所以线程基本上是轻量级的进程,它负责在单个程序里执行多任务.通常由操作系统负责

java多线程:并发包中的信号量和计数栓的编程模型

一:信号量的编程模型 1 package com.yeepay.sxf.test.atomic.test; 2 3 import java.util.concurrent.Semaphore; 4 5 /** 6 * 测试信号量 7 * 相当于有一把可以控制并发量的锁. 8 * 例如银行柜台,只有两个窗口.但三个人做业务,只允许同时有两个人能进行做业务 9 * 10 * 多线程 11 * @author sxf 12 * 13 */ 14 public class TestSemaphore {

面试知识点三:Java多线程

35.并行和并发有什么区别? 36.线程和进程的区别? 37.守护线程是什么? 38.创建线程有哪几种方式? 39.说一下 runnable 和 callable 有什么区别? 40.线程有哪些状态? 41.sleep() 和 wait() 有什么区别? 42.notify()和 notifyAll()有什么区别? 43.线程的 run()和 start()有什么区别? 44.创建线程池有哪几种方式? 45.线程池都有哪些状态? 46.线程池中 submit()和 execute()方法有什么区

多线程的创建方式---继承Thread和实现Runnable

继承Thread类创建多线程 1 package cn.ftf.thread; 2 /** 3 * 多线程实现方式一 继承Thread实现多线程,继承Thread,重写run方法 4 * @author 房廷飞 5 * 6 */ 7 public class StartThread extends Thread{ //对象继承Thread 8 public static void main(String[] args) { 9 StartThread st=new StartThread();

Java“白皮书”的关键术语

1. 简单性 2. 面向对象 3. 分布式 4. 健壮性 5. 安全性 6. 体系结构中立 7. 可移植性 8. 解释型 9. 高性能 10. 多线程 11. 动态性

Java 介绍

Java不只是一种语言,更是一个完整的平台,有一个庞大的库,其中包含了很多可重用的代码和一个提供诸如安全性.跨操作系统的可移植性以及自动垃圾收集等服务的执行环境. javaSE: 整个java技术的核心和基础,是javaME和javaEE的基础javaEE: java技术应用最广泛的部分,提供了企业应用开发相关的完整解决方案javaME: 用于控制移动设备和信息家电等有限存储设备 API 应用程序编程接口 核心API: sun的基本API,java核心类库 可选API: sun的扩充API,因平

架构师内练基础

1 JAVA架构师 101.1 SSH文档 101.2 UML 101.3 设计模式 111.4 多线程 111.5 加密算法 121.6 服务器缓存 121.7 LINUX 131.8 J2EE组件 131.9 性能优化 141.10 遗留问题 141.11 名词解释 14 1 JAVA架构师1.1 SSH文档http://wenku.baidu.com/view/89540abd960590c69ec3767f.html  spring2.5http://wenku.baidu.com/vi