在学习Java的道路上,是否路过多线程时总让你很迷惘;很不巧,我也是,而使我们感到很迷惘主要原因都源于没有对概念的深深的理解和实践。所以我决定漫步Java多线程,同你一起会会多线程。
深入多线程系列
深入多线程一:理解多线程在于深深地理解了多任务、进程、多线程、线程
深入多线程二:手撕多线程,从会三种创建多线程方式开始:除了常见的两种,你是否了解Callable接口方式?
深入多线程三:初遇并发问题:从一个小故事开始,从一行行代码开始
深入多线程四:停止多线程,你不会还以为是用stop和destroy吧?
深入多线程五:多线程为何要使用休眠?
深入多线程六:线程礼让与强制执行
深入多线程七:纯手绘图解多线程状态+代码示例,就问你怕了吗?
深入多线程八:多线程的优先级
深入多线程九:守护线程
深入多线程十:通过案例体会多线程的不安全
深入多线程十一: 超全synchronized的两种用法:同步方法与同步块
深入多线程十二:什么是死锁?
深入多线程十三:什么是Lock锁,比起synchronized锁有什么区别?
深入多线程十四:经典生产者与消费者问题,本质是线程通信问题
深入多线程十五:管程方式解决生产者与消费者问题
深入多线程十六:信号灯方式解决生产者与消费者问题
深入多线程十七:什么是池?线程池方式解决生产者与消费者问题
在系统中,线程是可以划分优先等级的。
并不是线程优先级高就能获得CPU资源,是要看CPU调度滴!
但是优先级高,线程得到的CPU资源权重也会更多,也就是说获得资源的概率也会高。
就像你关注我,你被我关注的概率也变高了,是不是这样子,嘿嘿!
线程的优先级用数字表示,范围从1~10,数字越大,优先级越高。
public class ThreadDemo implements Runnable{
@Override
public void run() {
System.out.println(Thread.currentThread().getName()+"==="+Thread.currentThread().getPriority());
}
public static void main(String[] args) {
System.out.println(Thread.currentThread().getName()+"==="+Thread.currentThread().getPriority());
ThreadDemo threadDemo = new ThreadDemo();
Thread t1 = new Thread(threadDemo,"小白");
Thread t2 = new Thread(threadDemo,"小蓝");
Thread t3 = new Thread(threadDemo,"一颗剽悍的种子");
t1.setPriority(2);
t1.start();
t2.setPriority(Thread.NORM_PRIORITY);
t2.start();
//常量Thread.MAX_PRIORITY=10
//t3.setPriority(Thread.MAX_PRIORITY);
t3.setPriority(10);
t3.start();
}
}
运行结果
多次运行结果,main都是在最先,所以想想,为什么?
当然是先得执行main才执行了我们其他线程,所以main总是在前是有道理的。
最后:
为了更好的阅读体验,我把想说的话都放在了下面,嘿嘿。
我是一颗剽悍的种子 把我会的,认真的分享 是我写博客一直不变的信条。
如果你能看到这篇博文,说明咱们还是很有缘的;希望能带给你一些许帮助,创作的不易, 把我文章的知识带走,你的三连留下,点赞,评论,关注,是我最大的动力。