社区
Java SE
帖子详情
线程的礼让问题
同学请坐の
2018-08-24 12:54:52
为什么有时i==3的时候会输出线程礼让,而有时不输出呢???求解
...全文
521
6
打赏
收藏
线程的礼让问题
为什么有时i==3的时候会输出线程礼让,而有时不输出呢???求解
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用AI写文章
6 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
qq_39936465
2018-09-14
打赏
举报
回复
建议你在“线程礼让“前也加个线程名不就一目了然了。
qq_39936465
2018-09-14
打赏
举报
回复
其实都输出了,不过是显示误导了你,因为进程执行时间有误差的。
第一个情况是 a进程执行到i=3 并打印了 进程名,但还没有执行了礼让,这时候 b进程也执行了i=3 并先与a执行礼让打印了 进程名,然后a进程执行礼让后,b进程执行礼让。
第2个情况是 a进程执行更快执行过了打印进程名,并开始执行礼让时 b进程还没有执行 i=3 后的打印进程名。
这种情况发生很正常。
Dan淡淡的心
2018-08-24
打赏
举报
回复
Java线程中的Thread.yield( )方法,译为线程让步。顾名思义,就是说当一个线程使用了这个方法之后,它就会把自己CPU执行的时间让掉, 让自己或者其它的线程运行,注意是让自己或者其他线程运行,并不是单纯的让给其他线程。 yield()的作用是让步。它能让当前线程由“运行状态”进入到“就绪状态”,从而让其它具有相同优先级的等待线程获取执行权;但是,并不能保 证在当前线程调用yield()之后,其它具有相同优先级的线程就一定能获得执行权;也有可能是当前线程又进入到“运行状态”继续运行! 举个例子:一帮朋友在排队上公交车,轮到Yield的时候,他突然说:我不想先上去了,咱们大家来竞赛上公交车。然后所有人就一块冲向公交车, 有可能是其他人先上车了,也有可能是Yield先上车了。 但是线程是有优先级的,优先级越高的人,就一定能第一个上车吗?这是不一定的,优先级高的人仅仅只是第一个上车的概率大了一点而已, 最终第一个上车的,也有可能是优先级最低的人。并且所谓的优先级执行,是在大量执行次数中才能体现出来的。
Surrin1999
2018-08-24
打赏
举报
回复
我以为你说怎么有时没输出= = 不过回答的方向是对的
Surrin1999
2018-08-24
打赏
举报
回复
你这个不是都输出了吗....上面那种情况是刚输出完A正在执行3 另一个线程就抢走了CPU控制权, 输出它的B正在执行3 然后各自礼让 输出对应的线程礼让: 下面那个是礼让语句执行了但没有交出CPU控制权(
礼让机制并不能保证另一个线程一定拿到CPU控制权 真正要做到请加同步锁
) 所以会继续输出线程礼让
qq_37257058
2018-08-24
打赏
举报
回复
线程礼让你改成换行输出,我觉得只是输出的格式困扰了你,没弄清问题本质,没你说的什么输出不输出的问题
Java 多
线程
解析:
线程
间的安全
问题
、
线程
间的通信
问题
与
线程
间的
礼让
问题
在 Java 编程领域,多
线程
是一个极为重要的概念,它能够显著提升程序的性能和响应能力,使程序能够更加高效地处理并发任务。本文将深入探讨 Java 中创建多
线程
的四种方式,以及多
线程
编程中的一些关键知识点,包括
线程
与进程的区别、
线程
安全
问题
、
线程
间通信、集合的
线程
安全性以及
线程
池的使用等。
day22知识点总结:
线程
安全
问题
及解决方法
线程
礼让
/ synchronized (BuyTickets01.class)写成这种形式也可。当
线程
使用该方法,它就会把自己的cpu执行时间让掉,让给自己或其他
线程
执行。注:静态方法中不能使用 this 且里面的变量要是 静态变量。问:ArrayList类中add()方法是否是
线程
安全的?
礼让
即该
线程
的1执行完不执行2,而是让给别的
线程
执行1。答:是
线程
不安全的 因为没有加synchroniaed。解决原理:被锁代码在同一时刻只允许一个
线程
访问。出现
线程
安全
问题
,同一
线程
抢了同一张票。1.模拟多人同步爬山。...
JAVA基础知识点20-
线程
状态、
礼让
线程
、join插队
线程
、守护
线程
与用户
线程
、
线程
优先级、
线程
通信、
线程
安全
问题
线程
状态:
线程
状态: 新生状态: new 就绪状态: start()准备好了,进入就绪队列,等待cpu的调度 运行状态: 当cpu调度某一个
线程
,这个
线程
获取
线程
体,执行
线程
体中的代码 阻塞状态:
线程
无法正常执行 终止状态:
线程
结束 注意: 一个
线程
如果一旦进入终止状态无法恢复,new了也是一个新的
线程
如果一个
线程
一旦进入到阻塞状态,阻塞接触会直接恢复到就绪状态不会恢复运行状态 一个
线程
如何进入到就绪.
JAVA基础——多
线程
(一)开启
线程
的两种方式,休眠,守护,加入,
礼让
线程
介绍,
线程
同步
问题
,
线程
安全
问题
,
线程
死锁
问题
一、 多
线程
的引入 什么是
线程
线程
是程序执行的一条路径, 一个进程中可以包含多条
线程
多
线程
并发执行可以提高程序的效率, 可以同时完成多项工作 多
线程
的应用场景 红蜘蛛同时共享屏幕给多个电脑 迅雷开启多条
线程
一起下载 QQ同时和多个人一起视频 服务器同时处理多个客户端请求 二、 多
线程
并行和并发的区别 并行 就是两个任务同时运行,就是甲任务进行的同时,乙任务也在进行。(需要多核CPU) 并发是指两个任务都请求运行,而处理器只能按受一个任务,就把这两个任务安排轮流进行,由于时间间隔较短,使人感觉两个任务
学习
线程
优先级,
线程
礼让
,
线程
死锁
1.写 5 个
线程
,优先级分别设置成 2,4,6,8,10
线程
名中有优先级
线程
循环输出
线程
名及序号,每次中间休眠 5ms 实现代码: package com.zhangyufan.thread; public class TestThreadPriority { public static void main(String[] args) { ThreadPriority tp = new ThreadPriority(); Thread t1 = new Thread(tp, "优先级:
Java SE
62,621
社区成员
307,251
社区内容
发帖
与我相关
我的任务
Java SE
Java 2 Standard Edition
复制链接
扫一扫
分享
社区描述
Java 2 Standard Edition
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章