如何控制多线程之间的优先级顺序

class Program

{

static void Main(string[] args)

{

PriorityClass pc = new PriorityClass();  //实例化PriorityTest类

Thread threadOne = new Thread(new ThreadStart(pc.ThreadMethod));//实例化线程

threadOne.Name = "线程1"; //设置线程名

Thread threadTwo = new Thread(new ThreadStart(pc.ThreadMethod));//实列化线程

threadTwo.Name = "线程2";//设置线程名

threadTwo.Priority = ThreadPriority.BelowNormal;//设置线程的优先级

Thread threadThree = new Thread(new ThreadStart(pc.ThreadMethod));//实列化线程

threadThree.Name = "线程3";//设置线程名

threadThree.Priority = ThreadPriority.AboveNormal;//设置线程的优先级

Thread threadFour = new Thread(new ThreadStart(pc.ThreadMethod));//实列化线程

threadFour.Name = "线程4";//设置线程名

threadFour.Priority = ThreadPriority.Highest;//设置线程的优先级

Thread threadFive = new Thread(new ThreadStart(pc.ThreadMethod));//实列化线程

threadFive.Name = "线程5";//设置线程名

threadFive.Priority = ThreadPriority.Lowest;//设置线程的优先级

threadOne.Start();//执行线程

threadTwo.Start();//执行线程

threadThree.Start();

threadFour.Start();

threadFive.Start();

Thread.Sleep(1000);//线程休眠1秒

pc.LoopSwitch = false;

Console.ReadLine();

}

class PriorityClass  //自定义一个类

{

bool loopSwitch;   //定义一个布尔型变量

public PriorityClass()   //构造方法

{

loopSwitch = true;

}

public bool LoopSwitch

{

set { loopSwitch = value; }

}

public void ThreadMethod()   //线程执行方法

{

long threadCount = 0;

while (loopSwitch)

{

threadCount++;

}

Console.WriteLine("{0} with {1,11} priority" + "has acount ={2,13}", Thread.CurrentThread.Name, Thread.CurrentThread.Priority.ToString(), threadCount.ToString("NO"));//显示当前线程情况

}

}

时间: 2024-10-04 22:41:20

如何控制多线程之间的优先级顺序的相关文章

如何控制多线程执行顺序

package com.thread; import java.util.concurrent.ExecutorService; import java.util.concurrent.Executors; /** * 如何控制多线程执行顺序 * 1.join方法,让主线程等待子线程执行完后再执行 * 2.newSingleThreadExecutor,创建执行单个任务的线程池执行.保证所有任务按照指定顺序(FIFO, LIFO, 优先级)执行 */ public class ThreadFIF

如何控制多线程的执行顺序

问题描述: Thread thread1 = new Thread(new Runnable() { public void run() { for (int i = 0; i < 1000; i++) { System.out.println(Thread.currentThread().getName() + "...." + i); } } }); Thread thread2 = new Thread(new Runnable() { public void run()

多线程之间的通信(等待唤醒机制、Lock 及其它线程的方法)

一.多线程之间的通信. 就是多个线程在操作同一份数据, 但是操作的方法不同. 如: 对于同一个存储块,其中有两个存储位:name   sex, 现有两个线程,一个向其中存放数据,一个打印其中的数据. 为了解决上述问题中的安全问题(在存放线程进行存放操作的时候, 打印线程不能对共有数据进行操作),所以应当对两个线程       操作共有数据的代码部分进行同步(使用synchronized(),来进行同步, 注意 :使用同一个对象作为同步锁. 二.等待唤醒机制. 在上述案例实现过后运行,会发现:打印

(转载)你好,C++(18) 到底要不要买这个西瓜?4.1.6 操作符之间的优先顺序

你好,C++(18) 到底要不要买这个西瓜?4.1.6 操作符之间的优先顺序 4.1.6 操作符之间的优先顺序 在表达一些比较复杂的条件判断时,在同一个表达式中,有时可能会存在多个操作符.比如,我们在判断要不要买某个西瓜时,不仅要判断它的总价(单价8.2元/斤,一共10.3斤)是否小于100块钱(因为兜里只有这么多钱),同时还要判断这个西瓜是否有坏掉的地方.要表达这个复杂的条件判断,我们不得不把前面学过的算术操作符.关系操作符和逻辑操作符全都派上场: bool bBad = false; //

你好,C++(18) 到底要不要买这个西瓜?4.1.6 操作符之间的优先顺序

4.1.6 操作符之间的优先顺序 在表达一些比较复杂的条件判断时,在同一个表达式中,有时可能会存在多个操作符.比如,我们在判断要不要买某个西瓜时,不仅要判断它的总价(单价8.2元/斤,一共10.3斤)是否小于100块钱(因为兜里只有这么多钱),同时还要判断这个西瓜是否有坏掉的地方.要表达这个复杂的条件判断,我们不得不把前面学过的算术操作符.关系操作符和逻辑操作符全都派上场: bool bBad = false; // 是否有坏掉的地方 float fPrice = 8.2; // 单价 floa

多线程之间的通信实例讲解

                 多线程之间的通信实例讲解对于线程来说,说白了,就是一个函数,如果大家对于这章函数都有理解,那我对于操作系统,线程和进程间的通信会有一个新的认识!接下来我会对每一行代码进行注释,在此过程中,大家也可以对c语言有一个崭新的认识. 第一个函数,创建两个线程. #include <stdio.h>#include <pthread.h>    这个头函数要包含,因为我们后续用的函数都是系统调用,因此需要申请头函数   这样在编译的时候,就可以找到此函数的源

Spring Boot 配置优先级顺序

http://www.cnblogs.com/softidea/p/5759180.html 一般在一个项目中,总是会有好多个环境.比如: 开发环境 -> 测试环境 -> 预发布环境 -> 生产环境 每个环境上的配置文件总是不一样的,甚至开发环境中每个开发者的环境可能也会有一点不同,配置读取可是一个让人有点伤脑筋的问题. Spring Boot提供了一种优先级配置读取的机制来帮助我们从这种困境中走出来. 常规情况下,我们都知道Spring Boot的配置会从application.pro

[Unity-20] Unity不同脚本之间的执行顺序

我们都知道,Unity中某个脚本的执行顺序是Awake.Start.Update.LateUpdate等,但是不同的脚本之间的执行顺序是怎样的呢? 例如我有两个脚本Script1和Script2,那么这两个脚本的Awake执行顺序是怎样的呢? 要知道真相我们就必须了解Unity后台的运行原理,其实Unity后台是单线程执行的,所谓的协程都是伪多线程.不同脚本的Awake在后台的执行真相是这样的: 后台Awake() { 脚本0Awake(); 脚本1Awake(); ........ } Sta

【java】-- 多线程之间实现通讯

1.多线程之间如何实现通讯 1.1.什么是多线程之间通讯? 多线程之间通讯,其实就是多个线程在操作同一个资源,但是操作的动作不同. 画图演示 1.2.多线程之间通讯需求 需求:第一个线程写入(input)用户,另一个线程取读取(out)用户.实现读一个,写一个操作. 2.代码实现基本实现 2.1.共享资源源实体类 class Res {      public String userSex;      public String userName; } 输入线程资源 class IntThrad