线程优先级,并不能保证优先级高的先运行,也不保证优先级高的更多的分配CPU时间,只是对系统的建议而已,到底运行哪个,是操作系统决定的,都不是java说了算的。
优先级高就是说同等条件下我运行的概率会比优先级低的高,至于具体怎么分配,这样看虚拟机的策略。但是肯定不会是像你想的那样,优先级高的运行完才运行优先级低的
package Project;
import java.awt.*;
import javax.swing.*;
class CreateThread implements Runnable
{
private int n = 0;
private JProgressBar progressbar;
private String str;
public CreateThread(JProgressBar progressbar, String str)
{
this.progressbar = progressbar;
this.str = str;
}
public void run()
{
n = 0;
while(true)
{
try{
Thread.sleep(5000);
}catch(Exception e)
{
e.printStackTrace();
}
progressbar.setValue(n++);
System.out.println(str);
if(n == 101)
break;
}
}
}
public class Project1 extends JFrame
{
/**
*
*/
private static final long serialVersionUID = -8798841678332294307L;
public void setProgressBar(JProgressBar progressbar, Container container)
{
progressbar.setStringPainted(true);
container.add(progressbar);
}
public Project1()
{
super("进程");
Container container = getContentPane();
container.setBackground(Color.white);
container.setLayout(new GridLayout(4, 1, 10, 10));
final JProgressBar progressbar1 = new JProgressBar();
setProgressBar(progressbar1, container);
Thread thread1 = new Thread(new CreateThread(progressbar1, "progressbar1"));
thread1.setPriority(1);
thread1.start();
final JProgressBar progressbar2 = new JProgressBar();
setProgressBar(progressbar2, container);
Thread thread2 = new Thread(new CreateThread(progressbar2, "progressbar2"));
thread2.setPriority(7);
thread2.start();
final JProgressBar progressbar3 = new JProgressBar();
setProgressBar(progressbar3, container);
Thread thread3 = new Thread(new CreateThread(progressbar3, "progressbar3"));
thread3.setPriority(4);
thread3.start();
final JProgressBar progressbar4 = new JProgressBar();
setProgressBar(progressbar4, container);
Thread thread4 = new Thread(new CreateThread(progressbar4, "progressbar4"));
thread4.setPriority(10);
thread4.start();
}
public static void draw(JFrame jframe, int width, int height)
{
jframe.setDefaultCloseOperation(WindowConstants.EXIT_ON_CLOSE);
jframe.setVisible(true);
jframe.setBounds(300, 300, width, height);
}
public static void main (String []args)
{
draw(new Project1(), 300, 300);
}
}
运行结果:
progressbar2
progressbar4
progressbar1
progressbar3
progressbar2
progressbar4
progressbar3
progressbar1
progressbar2
progressbar4
progressbar3
progressbar1
progressbar2
progressbar4
progressbar3
progressbar1
progressbar2
progressbar4
progressbar3
progressbar1
。。。。。
分享到:
相关推荐
JAVA多线程,并设置优先级案例,一段完整的程序,加上自己的东西就可以跑起来
java多线程知识点,源代码案例,代码案例中包括如何创建线程,主线程,线程优先级,线程组,线程同步,死锁,线程间的通信知识点
Java多线程--Thread类的常用结构及线程优先级
限制线程优先级和调度 Java 线程模型涉及可以动态更改的线程优先级。本质上,线程的优先级是从 1 到 10 之间的一个数字,数字越大表明任务越紧急。JVM 标准首先调用优先级较高的线程,然后才调用优先级较低的线程。...
Java线程赛马优先级示例,左侧的是高优先级,右侧的是低优先级。点击“Start”开始测试。
Java线程:线程的调度-优先级 Java线程:线程的调度-让步 Java线程:线程的调度-合并 Java线程:线程的调度-守护线程 Java线程:线程的同步-同步方法 Java线程:线程的同步-同步块 Java线程:并发协作-生产者...
详细的讲述了多线程的各种用法 Java线程:概念与原理 Java线程:创建与启动 Java线程:线程栈模型与线程的变量 Java线程:线程状态的转换 Java线程:线程的同步与锁 Java线程:线程的交互 Java线程:线程的调度-休眠...
Java线程:线程的调度-优先级 16 Java线程:线程的调度-让步 19 Java线程:线程的调度-合并 22 Java线程:线程的调度-终止线程 25 Java线程:线程的调度-守护线程 28 Java线程:线程组 30 Java线程:线程的同步 33 ...
计算机后端-Java-Java核心基础-第19章 IDEA的使用与多线程 17. 线程优先级的设置.avi
简单的多线程服务器实现,东北大学网络实验之一
【IT十八掌徐培成】Java基础第09天-003.多线程优先级-eclipse-配置使用.zip
主要介绍了Java 多线程优先级实例详解的相关资料,需要的朋友可以参考下
Java 多线程的创建及方法、优先级
《JAVA多线程设计模式》PDF 下载 《Java线程 高清晰中文第二版》中文第二版(PDF) 前言 第一章 线程简介 Java术语 线程概述 为什么要使用线程? 总结 第二章 Java线程API 通过Thread类创建线程 使用Runable接口...
Java多线程核心技术:理解多线程、在Java中实现多线程、线程的生命周期、线程的优先级、线程的同步、线程的阻塞、守护线程、线程组、线程池、总结。
通过这些高难度问题,您将全面掌握Java多线程编程的核心概念、技术和最佳实践。 每个问题都包含了深入的答案解析,涵盖了多线程编程的各个方面。您将了解线程安全、死锁、线程池、线程上下文切换、线程同步和互斥、...
对java的多线程进行了较为详细的描述,包括如何实现、线程的四周状态、线程的优先级、线程的同步、线程的阻塞等等
下面小编就为大家带来一篇浅谈java多线程 join方法以及优先级方法。小编觉得挺不错的,现在就分享给大家,也给大家做个参考。一起跟随小编过来看看吧