网站首页 > 精选教程 正文
在Java多线程中通常来说,在执行线程时,如果要保证线程的执行顺序,可以使用join和Executorservice
(1)对于join的作用主要时在CPU进行调度时,让主线程等待子线程执行结束后才往下继续执行
比如:
三个线程:
Thread t1 = new Thread(new Runnable(){ public void run(){}});
Thread t2 = new Thread(new Runnable(){ public void run(){}});
Thread t3 = new Thread(new Runnable(){ public void run(){}});
如果要保证线程执行顺序,可以使用join来进行控制(t1.join())
其实join方调用的就是Object类里的wait方法
JDK源码如下:
在运行时,mian方法就是一个主线程, 通过创建子线程,这里在创建子线程时由几个状态(新建,就绪(启动Thread时)),在调用start()方法后,线程由新建->就绪后,由CPU调度时由就绪->运行,这时通过调用t1.join()时,会让当前的线程进行等待(即当前运行的主线程进行等待),直到线程t1执行结束后再唤醒主线线程继续往下执行。
(2)使用Executorservice线程池进行操作,
ExecutorService executorService = Executors.newSingleThreadExecutor(); //创建单个线程池进行操作,这个其实就是把线程放到队列里,实现FIFO排队。
ExecutorService还有其他方法,
比如 newFixedThreadPool(); //创建固定大小的线程池
newCachedThreadPool(); //缓存线程池
猜你喜欢
- 2025-01-02 Java 多线程面试秘籍:25 道题全攻略
- 2025-01-02 Java 线程和操作系统的线程有啥区别?
- 2025-01-02 Java线程唤醒与阻塞的常用方法
- 2025-01-02 JAVA多线程实现的四种方式
- 2025-01-02 两万字带你了解Java多线程(详细大总结)
- 2025-01-02 java线程和线程池
- 2025-01-02 java线程池闭坑指南
- 2025-01-02 Java多线程引发的性能问题以及调优策略
- 2025-01-02 深入解读-全流程分析Netty设计思路与实践
- 2025-01-02 Java多线程实战|CountDownLatch原理介绍及使用场景
你 发表评论:
欢迎- 最近发表
- 标签列表
-
- nginx反向代理 (57)
- nginx日志 (56)
- nginx限制ip访问 (62)
- mac安装nginx (55)
- java和mysql (59)
- java中final (62)
- win10安装java (72)
- java启动参数 (64)
- java链表反转 (64)
- 字符串反转java (72)
- java逻辑运算符 (59)
- java 请求url (65)
- java信号量 (57)
- java定义枚举 (59)
- java字符串压缩 (56)
- java中的反射 (59)
- java 三维数组 (55)
- java插入排序 (68)
- java线程的状态 (62)
- java异步调用 (55)
- java中的异常处理 (62)
- java锁机制 (54)
- java静态内部类 (55)
- java怎么添加图片 (60)
- java 权限框架 (55)
本文暂时没有评论,来添加一个吧(●'◡'●)