问答文章1 问答文章501 问答文章1001 问答文章1501 问答文章2001 问答文章2501 问答文章3001 问答文章3501 问答文章4001 问答文章4501 问答文章5001 问答文章5501 问答文章6001 问答文章6501 问答文章7001 问答文章7501 问答文章8001 问答文章8501 问答文章9001 问答文章9501

java多个线程执行的顺序是按顺序执行的吗6

发布网友 发布时间:2023-09-22 08:08

我来回答

3个回答

热心网友 时间:2024-11-20 12:42

这个要分段来实现, 第一步是让线程同步,第二部是让线程有顺序。
同步:我们可以用synchronized来解决。
Java线程同步原理: java会为每个object对象分配一个monitor,当某个对象的同步方法(synchronized methods )被多个线程调用时,该对象的monitor将负责处理这些访问的并发独占要求。
当一个线程调用一个对象的同步方法时,JVM会检查该对象的monitor。如果monitor没有被占用,那么这个线程就得到了monitor的占有权,可以继续执行该对象的同步方法;如果monitor被其他线程所占用,那么该线程将被挂起,直到monitor被释放。
当线程退出同步方法调用时,该线程会释放monitor,这将允许其他等待的线程获得monitor以使对同步方法的调用执行下去。就像下面这样:
public void test() {
synchronized (this) {
//做一些事
//这里只会有一个线程来调用该方法,因为只有一个this对象作为资源分配给该线程
}

}

顺序:我们可以用List来解决,因为它是有序的。我们只需要将要执行的线程放入到List中

上代码:
/**
* 让多个线程同步顺序执行的线程管理器
* @author bianrx
* @date 2012.1.18
* SynchronizedRunMultiThread
*/
public class SyncManager {
/**
* 待执行的线程集合,注意这里必须是Runnable接口类型,下面会解释
*/
private List<Runnable> runnableList;

public SyncManager(){}

public SyncManager(List<Runnable> runnableList) {
this.runnableList = runnableList;
}

public void setRunnable(List<Runnable> runnableList) {
this.runnableList = runnableList;
}
public void run() {
//遍历代执行的线程集合
for(Runnable runnable: runnableList) {
runThread(runnable);
}
}

/**
* 按顺序同步执行多个线程
* @author bianrx
* @date 2012.1.18
* @param runnable
*/
private void runThread(Runnable runnable) {
synchronized (this) {
runnable.run();//这里需要注意的是:必须调用run方法,因为如果你调用了start方法,线程只会向JVM请求资源,但是未必就执行其中的run。
//这个方法是同步的,所以当前只有一个线程占用了this对象。
}
}
}

热心网友 时间:2024-11-20 12:43

建立了一个队列,为每一个Thread保存了一个对象锁,保证按顺序执行。线程启动的时候,使随机的,但是执行代码是按顺序的。
import java.util.LinkedList;
import java.util.Queue;
public class ThreadTest {
private static Queue qThread=new LinkedList();//线程同步对象队列
public static synchronized void putObject(Object t){
qThread.offer(t);
}

热心网友 时间:2024-11-20 12:43

随机的,没有什么固定的顺序
声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com
华硕笔记本电脑触摸板怎么开笔记本电脑触摸板怎么开启和关闭_百度知 ... 陕西职务侵占案立案准则 结婚后我的恋情维系了十年,怎么做到的? 玉米仁子饭产自哪里 中国期货交易所的交易品种有哪些? 历史要怎么读,有啥诀窍 高中历史诀窍 年终会活动策划方案 深度解析:第一财经回放,探索财经新风向 逆水寒手游庄园怎么邀请好友同住 六盘山主峰海拔多少米 鞋子太紧挤脚怎么办 白圆萝卜是什么季节种植怎么种植16 仿照例句“假如生命是……,不要……,要……”的句式,写一个类...7 西安纳坤建筑工程有限公司怎么样? 长沙微纳坤宸新材料有限公司怎么样?1 南京纳坤工贸有限公司怎么样? 东莞市坤纳检测技术有限公司怎么样? 你们平时都玩什么休闲游戏呢?什么游戏好玩呢?6 ...里盛有水,水的高度是7厘米,把瓶盖拧紧后倒置放平,无水部分是... 顽豆敌香酚祛痘怎么样?效果好吗?13 思源如皋高压怎么样?我是15届毕业生准备签的销售,知道的请客观说一... 东北凉皮的具体作法及材料4 萝卜苗怎么种33 东北大凉皮怎么做好吃380 炒东北凉皮怎么做252 我在捷信分期贷逾期没还钱,它们在法院起诉我,了,会不会冻结我...3 你好,如果手机分期不还的话,以后会不会把我其他的银行卡都给冻... 有网友用过顽豆敌这个产品吗它是祛痘痘的效果怎么样? 我办理了一个分期付款手机 现在没还了 会不会冻结我的所有银行... 哪位大神知道真假啊,这是前几天捷信给我发的律师函,给我打电话...29 手机莫名其妙收到这样一条捷信的还款信息怎么回事?请大神赐教 大神们,我想在捷信贷款,可是我才上班五天,可不可以贷,其它贷...2 大神们!我捷信逾期可以办信用卡吗?求大神告知求解谢谢 西湖公安说要冻结银行卡和支付宝是真的吗?3 东北拌凉皮的调料都有哪些?16 大家平时休闲时都玩什么游戏,有什么好玩的的游戏推荐一些呗?1 想问问大家,休闲类型的游戏大家清楚吗?有哪些好玩的小游戏呢?6 适合女生玩的休闲游戏有哪些?126 比较好玩的休闲小游戏有哪些?3 好玩的休闲游戏有哪些?7 java一个程序中有两个方法(非main方法),这两个方法是...4 条件表达式的执行顺序是固定的吗 java中同一层次的语句是按先后顺序执行还是同时执行呢? 不还钱 捷信说会冻结银行卡是真的吗7 征信上有捷信1999的呆账,请问还能办信用卡吗,各位大神有没...10 怎样种植萝卜才能使萝卜更大15 东北拌凉皮的调料都有哪些?14 请问“真菌类中药”是如何降血糖?如何治疗糖尿病的? 在程序中,程序执行的顺序是按程序中执行的顺序执行的?11