Java多线程怎么设置优先级


本篇内容介绍了“Java多线程怎么设置优先级”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!举例说明:我们知道飞机在天上飞行是有固定的航线(可以理解成线程),每个机场都有最大的运行负载能力,当运行情况超过了负载能力的时候,这就需要塔台调度参与,会根据每架飞机的优先级排序。当在航线的时候,如果出现紧急情况,会让其他飞机避让,让这架飞机优先级提高,先免费云主机域名降落。这就是调度,计算机程序线程运行也是这样的。在Java多线程中,主要可以通过下面四个方法来分配CPU的使用权:设置优先级(Priority) 设置线程的优先级,值是1-10休眠(sleep) 单位毫秒,让本线程属于阻塞状态,CPU会执行其他线程强制运行(join) 让这个线程强制获取CPU资源来运行礼让(yield) 暂停正在执行的线程,让其他线程先执行,执行完了在接着执行有两个线程,分别设置最大优先级和最小优先级:结果:Thread.sleep();——–单位是毫秒,让本线程属于阻塞状态,CPU会执行其他线程:结果:顾名思义,就是让某个线程强制进入执行:子线程:测试类:结果:暂停正在执行的线程,让其他线程先执行,执行完了在接着执行:测试类:结果:定时器就是可以设置某个时间点来执行某个事件,比如系统每周删除依次日志文件,或者在指定的日期关闭系统,定时器本身就是一个线程任务来在指定的时候执行该任务。定时器是继承TimerTask来重写run方法,专门处理定时任务。演示Demo:测试类:结果:首先我们先看一个demo:创建了两个线程对象,一个线程A任务用于执行print1,另一个线程B任务用于执行print2:测试类:这个程序就是当线程A执行的时候,输出中国,当B执行的时候,输出浙江,理论上是没有任何问题,但是我们看一下结果:我们发现出问题了,其实这就是非线程同步(异步):同步:提交请求->等待服务器处理->处理完返回 这个期间客户端浏览器不能干任何事异步:请求通过事件触发->服务器处理(这是浏览器仍然可以作其他事情)->处理完毕其实非线程同步在有些系统是很危险的问题,比如12306,如果使用非线程同步,那么后果可想而知,那么该如何同步呢? 这里介绍一个常用的方法,就是上锁:如果两端代码(两个线程任务)是同步的,那么CPU同一时间只能执行一个任务,相当于给该线程上了一把锁, 在该线程没有执行完这段代码或者任务的时候,其他线程是不能占用CPU资源执行任务的。直到执行完了该线 程的代码,其他线程才可以执行。更好的理解(举例):你去公共厕所上厕所(大的),当你进去后,需要把门关上并锁着,这就是上锁,为了保证你正常的结束(保证线程正常运行完),这期间其他人是不能进来的。Synchronized 锁:两个线程任务使用同一个对象为锁,那么两个线程方法是同步的 我们把上面的方法上个锁:这样输出后就不会出现上面的那个问题,这里就不发结果截图啦。大家可以自己试一试,看看是否解决了这个问题~我们还可以把锁直接定义在方法上,比如这样子:如果是静态方法,上锁的方式是通过.class字节码对象:“Java多线程怎么设置优先级”的内容就介绍到这里了,感谢大家的阅读。如果想了解更多行业相关的知识可以关注百云主机网站,小编将为大家输出更多高质量的实用文章!

相关推荐: CSS知识点有哪些

这篇文章给大家分享的是有关CSS知识点有哪些的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。 1、对WEB标准以及W3C的理解与认识 标签闭合、标签小写、不乱嵌套、提高搜索机器人搜索几率; 使用外链css和js脚本、结构行为表现的分离…

免责声明:本站发布的图片视频文字,以转载和分享为主,文章观点不代表本站立场,本站不承担相关法律责任;如果涉及侵权请联系邮箱:360163164@qq.com举报,并提供相关证据,经查实将立刻删除涉嫌侵权内容。

(0)
打赏 微信扫一扫 微信扫一扫
上一篇 01/13 20:45
下一篇 01/13 20:45

相关推荐