`

线程学习【九】线程的优先级、yield

    博客分类:
  • Java
阅读更多
调用线程的 toString 方法打印如下:
左边为线程名; 中间为线程的优先级(默认为5) 右边为线程所属的组。
[img]

[/img]


package com.zzl.thread;

/**
 * 线程的优先级越高,抢占到cpu执行权的几率就越大
 * Thread.MAX_PRIORITY = 10
 * Thread.MIN_PRIORITY = 1
 * Thread.NORM_PRIORITY = 5
 * 
 * Thread.yield();   哪个线程读到 yield()的时候会释放执行权,减少线程执行的频率,达到平均执行效果。
 * 
 */
class JoinRunnable implements Runnable{

	@Override
	public void run() {
		for(int i = 0;i < 10;i++){
			System.out.println(Thread.currentThread().toString()+"......."+i);
			
			//当线程这行到这里的时候,会释放执行权,达到线程交互执行的效果。
			Thread.yield();
		}
	}
	
}


public class MyThreadDemo {
	
	public static void main(String[] args) {
		JoinRunnable r =new JoinRunnable();
		Thread t1 = new Thread(r);
		Thread t2 = new Thread(r);
		t1.start();
		//将t1线程的优先级设置为最高   即为:10
		t1.setPriority(Thread.NORM_PRIORITY);
		
		t2.start();
		
		
	}

}
  • 大小: 19.2 KB
分享到:
评论

相关推荐

    线程的基本概念、线程类、任务类、线程优先级、sleep()方法、yield()方法、join方法、interrupt()方法

    线程的基本概念、线程类、任务类、线程优先级、sleep()方法(休眠)、yield()方法(礼让)、join方法(合并)、interrupt()方法(中断),线程的生命周期 线程 与 进程 的关系:**有一个进程中至少包含一个线程 **...

    java 线程让步(Yield)

    Java线程让步(Yield)是Java多线程编程中的一个重要概念,它涉及到线程调度和并发控制。在多线程环境下,线程让步意味着一个正在运行的线程主动放弃当前的时间片,以便其他就绪状态的线程有机会执行。这与线程的...

    Java多线程编程之限制优先级

    Java多线程编程中的线程优先级是一种机制,允许开发者为不同线程分配不同程度的执行紧急程度。在Java中,线程优先级范围是从1(Thread.MIN_PRIORITY)到10(Thread.MAX_PRIORITY),其中10表示最高优先级,1表示最低...

    JAVA100例之实例67JAVA线程优先级

    Java线程优先级是Java多线程编程中的一个重要概念,它允许我们为不同的线程分配不同的执行优先级,理论上优先级高的线程更有可能获得CPU的执行资源。然而,这并不意味着高优先级的线程一定会先执行或者执行频率更高...

    C#线程参考手册 线程学习

    五、线程优先级 每个线程都有一个优先级,但操作系统并不保证优先级高的线程一定先执行,而是尽可能给予较高优先级的线程更多执行机会。 六、后台线程与前台线程 1. 前台线程:与进程生命周期绑定,只有所有前台...

    Java多线程-Thread类的常用结构及线程优先级

    本文将详细解析Thread类的常用结构以及线程优先级。 一、Thread类的常用结构 1. 线程中的构造器 - `Thread()`:创建一个没有指定名称的新线程对象。在创建Thread类的子类时,如果子类没有提供构造器,会默认调用...

    Java线程学习和总结

    Java提供了一些方法来控制线程状态,如`sleep()`使线程暂停执行一段时间,`join()`等待指定线程结束,`yield()`让当前线程暂停,让其他相同优先级的线程有机会执行,`interrupt()`用于中断线程。 同步是Java线程...

    多线程学习文档

    - **解析**:这段代码展示了如何使用`System.Threading.Thread`类来获取当前线程的各种信息,包括线程ID、所在的应用程序域ID、上下文ID、线程名称、线程状态以及线程优先级等。 #### 四、线程控制方法 - `Start()`...

    操作系统课程设计报告:实验三 Pintos线程管理【Pintos Project 1: Threads】

    8. thread_cmp_priority函数:thread_cmp_priority函数是一个比较线程优先级的函数。在这个函数中,线程的优先级被比较,并根据优先级来决定线程的执行顺序。 9. 线程yield:线程yield是指线程将控制权交给其他线程...

    thread多线程学习记录

    线程优先级可以影响线程调度,但Java的线程调度并不完全依赖于优先级,因此使用时需谨慎。守护线程是一种后台线程,当所有非守护线程结束时,守护线程会自动终止。线程组则可以方便地管理和控制一组线程,例如设置...

    优先级抢占调度1

    实验过程涉及到对线程创建、线程优先级设置、线程调度以及线程状态转换的理解。`thread_create`函数用于创建线程,`thread_set_priority`函数用于更改线程的优先级,`thread_yield`函数则是让当前线程自愿放弃CPU,...

    java线程的学习

    - **`yield()`**:建议当前线程放弃CPU时间片,重新进入就绪状态。 **线程的优先级:** - 每个线程都有一个优先级,默认情况下,新创建的线程继承父线程的优先级。 - 优先级高的线程比优先级低的线程更容易获得CPU...

    java多线程Demo

    但是,线程优先级并不保证绝对的执行顺序,操作系统调度策略可能影响实际执行顺序。 7. join()方法: 一个线程调用另一个线程的join()方法,会等待该线程执行完毕后再继续执行,可以用来控制线程的执行顺序。 8. ...

    经典线程例子——Java线程学习指南

    五、线程优先级 Java线程有三个优先级:MIN_PRIORITY(1)、NORM_PRIORITY(5)和MAX_PRIORITY(10)。默认情况下,所有线程的优先级都是NORM_PRIORITY。优先级高的线程并不保证一定先执行,而是相对有机会先执行。 ...

    Java多线程学习笔记

    可以通过`setPriority(int newPriority)`方法设置线程优先级,通过`getPriority()`方法获取当前线程的优先级。 #### 四、线程的状态控制 线程在其生命周期中可能会经历不同的状态,如新建状态、可运行状态、阻塞...

    Java线程中yield与join方法的区别Java开发J

    这个方法的目的是让当前运行的线程暂时放弃CPU的执行权,让其他具有相同优先级的线程有机会获取执行。`yield`并不保证当前线程会立即停止执行,也不意味着其他线程一定能获取到CPU资源,它更像是一个建议性的操作。...

    Java线程让步yield用法实例分析

    Java线程让步yield用法的原理是当某个线程调用了yield方法暂停之后,只有优先级与当前线程相同,或者优先级比当前线程更高的处于就绪状态的线程才会获得执行的机会。这个机制可以用来控制线程的执行顺序和优先级,...

    浅谈java多线程 join方法以及优先级方法

    然而,需要注意的是,线程优先级并不是绝对的执行顺序保证,而是对调度的一个指导,实际的执行顺序还取决于操作系统的线程调度策略。线程优先级可以通过`setPriority()`方法来设置,如`t1.setPriority(Thread.MAX_...

    C#多线程学习入门圣典(修改版)

    ### C#多线程学习入门圣典(修改版) #### C#多线程学习(一) 多线程的相关概念 - **什么是进程?** - 当一个程序开始运行时,它就是一个进程。进程不仅包括运行中的程序本身,还包括程序所使用的内存和系统资源。在...

Global site tag (gtag.js) - Google Analytics