精华内容
下载资源
问答
  • ceSetThreadPriority设置线程的优先级

    千次阅读 2014-04-11 09:39:47
    一直采用SetThreadPriority,结果今天发帖询问线程时间问题,才突然顿悟。。。发现SetThreadPriority仅仅设置248-255...我就说我的线程设置的优先级怎么没什么用。。。。。。NYYD。。。   初始化代码中的关键 Wi

    一直采用SetThreadPriority,结果今天发帖询问线程时间问题,才突然顿悟。。。发现SetThreadPriority仅仅设置248-255,也就是说就算是设为最高优先级,顶多是248.。。。差好远呢。。。而ceSetThreadPriority的设置范围是0-255,最高为0!!!我就说我的线程设置的优先级怎么没什么用。。。。。。NYYD。。。

     

    初始化代码中的关键 Win32 API 调用是对 CeSetThreadPriority 的调用。此函数接受两个参数。第一个参数是线程句柄,第二个值介于 0-255 之间,用于描述所需的优先级。选择使用哪个线程优先级非常关键,而能够以图表表现应用程序优先级的使用,也有助于确保适当的性能。优先级从 0 至 247 的线程(0 表示最高优先级)是实时线程优先级,需要调用 CeSetThreadPriority 来访问。一般线程优先级介于 248-255 之间,要使用 SetThreadPriority 进行访问。下表提供了 Windows CE .NET 标准优先级实现的快速指南。

    表 3:实时线程优先级:CeSetThreadPriority

    优先级 组件
    0-19 开放 - 高于驱动程序的实时
    20 Permedia 垂直折返
    21-98 开放 - 高于驱动程序的实时
    99 电源管理恢复线程
    100-108 USB OHCI UHCI、串行
    109-129 Irsir1、NDIS、触摸板
    130 KITL
    131 VMini
    132 CxPort
    133-144 开放 - 设备驱动程序
    145 PS2 键盘
    146-147 开放 - 设备驱动程序
    148 IRComm
    149 开放 - 设备驱动程序
    150 TAPI
    151-152 开放 - 设备驱动程序
    153-247 开放 - 低于驱动程序的实时

    表 4:一般线程优先级:SetThreadPriority

    优先级 组件
    248 电源管理
    249 WaveDev、TVIA5000、鼠标、PnP、电源
    250 WaveAPI
    251 电源管理器电池线程
    252-255 开放

    一般来说,最先需要决定的是要确定关键线程是否需要驱动程序。如果关键线程需要驱动程序才能正常工作,而将它的优先级设定为高于驱动程序的优先级,则很难获得好的性能。总之,时间关键型应用程序需要放在“高于驱动程序类别的实时”类别中,优先级范围为 0-98。

    展开全文
  • ceSetThreadPriority 一直採用SetThreadPriority,结果今天发帖询问线程时间问题,才突然顿悟。。。发现SetThreadPriority只设置248-255,也就是说...我就说我的线程设置的优先级怎么没什么用。。。。。。NYYD...

    ceSetThreadPriority

    一直採用SetThreadPriority,结果今天发帖询问线程时间问题,才突然顿悟。。。发现SetThreadPriority只设置248-255,也就是说就算是设为最高优先级,顶多是248.。。。差好远呢。。。而ceSetThreadPriority的设置范围是0-255,最高为0!!!我就说我的线程设置的优先级怎么没什么用。。。。。。NYYD。。。

     

    初始化代码中的关键 Win32 API 调用是对 CeSetThreadPriority 的调用。此函数接受两个參数。第一个參数是线程句柄,第二个值介于 0-255 之间,用于描写叙述所需的优先级。选择使用哪个线程优先级很关键,而可以以图表表现应用程序优先级的使用,也有助于确保适当的性能。优先级从 0 至 247 的线程(0 表示最高优先级)是实时线程优先级,须要调用 CeSetThreadPriority 来訪问。一般线程优先级介于 248-255 之间,要使用 SetThreadPriority 进行訪问。下表提供了 Windows CE .NET 标准优先级实现的高速指南。

    表 3:实时线程优先级:CeSetThreadPriority

    优先级 组件
    0-19 开放 - 高于驱动程序的实时
    20 Permedia 垂直折返
    21-98 开放 - 高于驱动程序的实时
    99 电源管理恢复线程
    100-108 USB OHCI UHCI、串行
    109-129 Irsir1、NDIS、触摸板
    130 KITL
    131 VMini
    132 CxPort
    133-144 开放 - 设备驱动程序
    145 PS2 键盘
    146-147 开放 - 设备驱动程序
    148 IRComm
    149 开放 - 设备驱动程序
    150 TAPI
    151-152 开放 - 设备驱动程序
    153-247 开放 - 低于驱动程序的实时

    表 4:一般线程优先级:SetThreadPriority

    优先级 组件
    248 电源管理
    249 WaveDev、TVIA5000、鼠标、PnP、电源
    250 WaveAPI
    251 电源管理器电池线程
    252-255 开放

    一般来说,最先须要决定的是要确定关键线程是否须要驱动程序。假设关键线程须要驱动程序才干正常工作,而将它的优先级设定为高于驱动程序的优先级,则非常难获得好的性能。总之,时间关键型应用程序须要放在“高于驱动程序类别的实时”类别中,优先级范围为 0-98。

    展开全文
  • Java多线程有三种停止线程的方法: 使用stop()方法强制线程退出,但是此方法会残留不完整数据,因为stop会解除线程获取的所有锁。现在已经不使用这种方法了。 设置标志位,使线程正常退出,setFlag() 方法; 标志位...

    怎么停止线程?

    Java多线程有三种停止线程的方法:

    • 使用stop()方法强制线程退出,但是此方法会残留不完整数据,因为stop会解除线程获取的所有锁。现在已经不使用这种方法了。
    • 设置标志位,使线程正常退出,setFlag() 方法;
      标志位:myThread.setFlag(false);这样调用,该线程就被终止了
    • 使用Thread类的interrupt()方法中断线程,但是原理也是设置标志位;
      interrupt只会改变中断状态,并不会中断一个线程,如果当前线程处于非阻塞状态,interrupt会将中断标志设置为true,在线程工作的过程中一旦线程进入了阻塞状态,比如调用了wait,join,sleep方法,中断标志就会被设置为false,并且抛出InterruptException异常,Thread类提供的public boolean isInterrupted()可以检测当前线程状态是否为中断状态,interrupt可以响应阻塞,在抛出的异常中,可以在try,catch块中停止线程,设置标志位。
    class MyThread implements Runnable {
    	private boolean flag = true;
    	@Override
    	public void run() {
    		int i = 1;
    		while (flag) {
    			try {
    			/**
    			* 这⾥阻塞之后,线程被调⽤了interrupte()⽅法,
    			* 清除中断标志,就会抛出⼀个异常
    			* java.lang.InterruptedException
    			*/
    				Thread.sleep(1000);
    				boolean bool = Thread.currentThread().isInterrupted();
    				if (bool) {
    					System.out.println("⾮阻塞情况下执⾏该操作。。。线程状态" +
    						bool);
    					break;
    			   }
    				System.out.println("第"+i+"次执⾏,线程名称
    					为:"+Thread.currentThread().getName());
    				i++;
    			} catch (InterruptedException e) {
    				System.out.println("退出了");
    				/**
    				* 这⾥退出阻塞状态,且中断标志被系统会⾃动清除,
    				* 并且重新设置为false,所以此处bool为false
    				*/
    				boolean bool = Thread.currentThread().isInterrupted();
    				System.out.println(bool);
    				//退出run⽅法,中断进程
    				return; 
    	 		} 
       		} 
    	}
    	public void setFlag(boolean flag) {
    		this.flag = flag; 
    	} 
    }
    public class Test {
    	public static void main(String[] args) throws InterruptedException {
    		MyThread myThread = new MyThread();
    		Thread thread1 = new Thread(myThread,"⼦线程A");
    		thread1.start();
    		Thread.sleep(3000);
    		thread1.interrupt();
    		System.out.println("代码结束");
    	}
    }
    

    结果:
    在这里插入图片描述

    线程优先级?

    线程的优先级指的是,线程的优先级越⾼越有可能先执⾏,但仅仅是有可能⽽已。

    • 设置优先级方法:void setPriority(int newPriority);
    • 取得线程优先级:int getPriority();
    • 线程是有继承关系的,⽐如当A线程中启动B线程,那么B和A的优先级将是⼀样的。
    • 对于优先级设置的内容可以通过Thread类的⼏个常量来决定
    1. 最⾼优先级:public final static int MAX_PRIORITY = 10;
    2. 中等优先级:public final static int NORM_PRIORITY = 5;
    3. 最低优先级:public final static int MIN_PRIORITY = 1;

    线程守护?

    java 中有两种线程:⽤户线程和守护线程:默认创建的线程就是用户线程,包括主线程main,守护线程是陪伴线程,只要jvm中还有线程没有终止,守护线程就一直工作,通过setDaemon(true)将线程对象设置为守护线程,垃圾回收线程就是典型的守护线程。

    展开全文
  • C#多线程——优先级

    2019-10-04 20:24:23
    在我的公司这里,因为要跟很多特殊的设备打交道,所以会用到多线程的东西,那么我们在进行多线程处理的时候,怎么设置优先级 我这里用听歌和下载小说做了个例子,我们用电脑的时候肯定是可以边听歌边下载小说的,...

           在我的公司这里,因为要跟很多特殊的设备打交道,所以会用到多线程的东西,那么我们在进行多线程处理的时候,怎么去设置优先级

    我这里用听歌和下载小说做了个例子,我们用电脑的时候肯定是可以边听歌边下载小说的,那么这就需要并行,有个问题就是我想优先听

    歌,下载小说对我来说不是那么急的话我就可以对两个事情进行优先级的管控。

            线程里有个属性Priority可以用来设置优先级,我设置线程1的优先级高于线程2的优先级,那么线程1就会比线程2多运行一段时间,这个是人眼观察不出来的

    运行速度,CPU运行速度可不是能用人眼查看的

                bool b = true;
                int i=0, j=0;
                string Song = "";
                string Download = "";
                Thread Thread1=new Thread(() =>
                {
                    while (b)
                    {
                        Song="一百万个可能";
                        i++;
                        
                    }
                })
                {
                    Name = "Thread1",
                    Priority = ThreadPriority.Highest
                };
                 Thread Thread2=new Thread(() =>
                {
                    while (b)
                    {
                        Download = "小说三体";
                        j++;
                    }
                })
                {
                    Name = "Thread2",
                    Priority = ThreadPriority.Lowest
                };
                Thread1.Start();
                Thread2.Start();
                Thread.Sleep(1000);
                b = false;
                Console.WriteLine("Song: {0}, Download: {1}", Song, Download);
                Console.WriteLine("歌曲的优先级:{0}",i);
                Console.WriteLine("下载的优先级:{0}",j);
                Console.ReadLine();

    这里我们看一下执行结果

    从结果中可以看到,优先级高的线程得到运行的次数比优先级低的线程多,但即使是最低优先级的线程都有很大的机会来执行。

     

    转载于:https://www.cnblogs.com/yinxuejunfeng/p/9689475.html

    展开全文
  • 线程API应该怎么用1、setPriority 设置线程的优先级2、isDaemon、setDaemon 守护线程API3、线程中断4、isAlive 、join 、线程状态5、activeCount、getName 等简单的API 1、setPriority 设置线程的优先级 public ...
  • 线程

    2015-04-12 19:55:31
    多线程其他功能:/* * 线程没有设置优先级时,使用的是默认优先级5 ... * 如何设置线程的优先级? * public final void setPriority(int newPriority):更改线程优先级 * 线程默认优先级是5 * 线程优先级范围是1-10
  • 接着他又问,有没有其它的实现方式,这时我在想,线程的优先级呢,为这三个线程设置优先级,但是我随之否定了自己的这个想法,因为线程的优先级只是理论上的优先级,它可以让线程优先级高的可能概率稍微大的先执行,...
  • 线程(二)

    2020-06-17 00:08:28
    补充一点: 说到线程的调度方式,抢占式调度,那么优先级是怎么区分的呢,其实我们可以设置线程的优先级,在java中,一般是0-10. 创建线程的方式二 采用 java.lang.Runnable 也是非常常见的一种,我们只需要重写run...
  • dubbo超时时间怎么设置?2种方式? 服务提供者端设置超时时间,在 Dubbo 用户文档中,推荐如果能在服务端多配置就尽量多配置,因为服务提供者比消费者更清楚自己提供服务特性。 服务消费者端设置超时时间,如果...
  • java基础线程总结

    2018-02-04 20:44:45
    如果还有重要资料需要加入,...5. 如何将线程设置为后台线程,后台线程跟前台线程的结束关系? 6. 设定线程优先级的方法是? 7. 当有多个线程使用同一个资源时,解决线程同步的方法又哪些? 8. 怎么建立线程之间的管道通信
  • 本来我想法是很简单,直接设置优先级就好了,实现之后发现,执行顺序还是乱。看了网上其他大佬想法,才发现,我还小哈哈哈,emm,还好我还有时间慢慢学习,慢慢补充自己。  总结一下大概思路就是:T3先执行...
  • Android线程调度机制

    千次阅读 2014-02-24 15:27:04
    在Android Weekly上看到了一篇关于Android线程调度文章,感觉挺不错,试着将其翻译了一下...这篇文章是关于Android中线程是如何调度,以及怎么样显示设置线程优先级保证应用程序在多个线程在后台运行时保持响应。
  • *如果要加入优先级就在线程开启前设置好,不指导怎么设置的可以看下面两行 (太少数值也很难看出来): *t1.setPriority(1); *t2.setPriority(5); * 假如需要加入睡眠,把下面代码放入run方法里 * try...
  • 这章将向大家介绍.NET中的线程API,怎么样用C#创建线程,启动和停止线程,设置优先级和状态. 在.NET中编写的程序将被自动的分配一个线程.让我们来看看用C#编程语言创建线程并且继续学习线程的知识。我们都知道.NET的...
  • 这章将向大家介绍.NET中的线程API,怎么样用C#创建线程,启动和停止线程,设置优先级和状态. 在.NET中编写的程序将被自动的分配一个线程.让我们来看看用C#编程语言创建线程并且继续学习线程的知识。我们都知道.NET的...
  • 线程使用总结

    2016-03-11 16:16:13
    ios开发过程中多线程是...NSOperation(操作):操作是放在队列中,放在队列里面操作是不需要start系统会自动调用start,操作可以设置优先级 设置从属性,  NSOperationQueue (队列)队列必须区分于线程,在
  • 我将向大家介绍.NET中的线程API,怎么样用C#创建线程,启动和停止线程,设置优先级和状态. 在.NET中编写的程序将被自动的分配一个线程.让我们来看看用C#编程语言创建线程并且继续学习线程的知识。我们都知道.NET的...
  • c#多线程(转载)

    2009-06-02 14:00:00
    这章将向大家介绍.NET中的线程API,怎么样用C#创建线程,启动和停止线程,设置优先级和状态. 在.NET中编写的程序将被自动的分配一个线程.让我们来看看用C#编程语言创建线程并且继续学习线程的知识。我们都知道.NET的...
  • 这章将向大家介绍.NET中的线程API,怎么样用C#创建线程,启动和停止线程,设置优先级和状态. 在.NET中编写的程序将被自动的分配一个线程.让我们来看看用C#编程语言创建线程并且继续学习线程的知识。我们都知道.NET的...
  • 线程:Operation(二)

    2017-10-18 00:15:00
    其实一看就明白,这四个操作是有先后顺序,但假如所有操作都是多线程,咱们怎么控制顺序?通过设置优先级”?NO!优先级没有办法干这个事情。(相当于操作系统中同步) 我们可以通过设置依赖关系,...
  • 在接下来的这篇文章中,我将向大家介绍.NET中的线程API,怎么样用C#创建线程,启动和停止线程,设置优先级和状态. 在.NET中编写的程序将被自动的分配一个线程.让我们来看看用C#编程语言创建线程并且继续学习线程的知识...
  • 这章将向大家介绍.NET中的线程API,怎么样用C#创建线程,启动和停止线程,设置优先级和状态. 在.NET中编写的程序将被自动的分配一个线程.让我们来看看用C#编程语言创建线程并且继续学习线程的知识。我们都知道.NET的...
  • 这章将向大家介绍.NET中的线程API,怎么样用C#创建线程,启动和停止线程,设置优先级和状态.  在.NET中编写的程序将被自动的分配一个线程.让我们来看看用C#编程语言创建线程并且继续学习线程的知识。我们都知道.NET...
  • Java多线程、进度条实现赛马实验

    千次阅读 热门讨论 2020-11-01 09:23:34
    赛马 ...为了下周一能有更充裕的时间在实验课写代码,我搜了...创建分别代表两匹马的两个线程,并将它们设置为高低不同的优先级,并以进度条的形式显示赛马过程。 以下是我经过多方学习写出的代码,希望大佬斧正。 (文章

空空如也

空空如也

1 2 3 4 5
收藏数 90
精华内容 36
关键字:

怎么设置线程的优先级