java多线程学习-1
问1:同一个线程对象可以被多次调用start方法吗?
》不可以。因为每一个线程有一个volidate修饰的线程状态【threadStatus】。在每次调用start方法时,都会检查线程状态,如果不为0,则抛出
【IllegalThreadStateException();】
问2:主线程和子线程之间的关系时怎样的?
》主线程创建子线程对象,主线程和子线程各自执行,互相不影响。同时,子线程之间也不会互相干扰。
问3:如果直接调用线程的run()方法,会是怎样的?
》程序不会报错,但是是由主线程执行。【start()方法是帮助启动线程和执行run()方法】
匿名内部类如何使用的?
》new 父类(){子类内容}
线程中常用的方法:
/**
* 测试Thread类中的常用方法
* 1、start()启动当前线程,调用当前线程中的run方法
* 2、run()通常需要重写,将线程需要执行的任务写到run()中
* 3、SetName(),GetName()
* 4、currentThread()
* 5、yield()线程让步,让出线程的执行权
* 6、join()在线程a中调用线程b的join(),此时线程a就会立刻进入到阻塞状态,知道线程b完全执行完后,线程a才会结束阻塞状态
* 7、sleep(int)
* 8、stop()强制终止线程,已经过时
* 9、isAlive()判断当前线程是否存活
*/
》
线程中的setpriority()方法,可以设置线程的优先级。
》疑问?如何通过方法进行线程优先级的设置?是否和操作系统中的进程抢占调度算法类似?
线程中为什么setpriority()设置完优先级之后,线程之间还是会有交叉调度的?
》线程优先级高的并不会一直抢占cpu资源,也会有轮询机制。所以不管如何设置优先级,不会使其中的某个线程彻底处于阻塞状态,直到优先级高的线程先执行完
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· 开发者必知的日志记录最佳实践
· SQL Server 2025 AI相关能力初探
· Linux系列:如何用 C#调用 C方法造成内存泄露
· Manus爆火,是硬核还是营销?
· 终于写完轮子一部分:tcp代理 了,记录一下
· 别再用vector<bool>了!Google高级工程师:这可能是STL最大的设计失误
· 单元测试从入门到精通
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了