| |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
-> PHP知识库 -> 多线程-线程的一些属性 -> 正文阅读 |
|
[PHP知识库]多线程-线程的一些属性 |
作者:more-toolbox-new |
线程的ID,线程的ID是固定的,是不能认为设置的。 线程的name。线程的name是可以设置的,即便是创建之后,也是能设置的。通过设置线程的name,能够在我们日后的测试和日志中,快速的定位到我们的问题所在。 线程的优先级:priority ??????? 设置线程的优先级,有助于我们优先执行某些线程吗? 答案是否定的。因为线程的优先级在不同的操作系统中,其解析的优先级是不同的,故设置线程的优先级是意义不大的。 线程的生命周期(6/7个) New Runnable(细分可以分成两个) Wait Timewait Blocked Terminated ?? 线程的状态。
如果一个线程启动两次,会出现什么样的情况?为什么? 答:当一个线程被start两次,首先,线程会检查自身的status,那么就会抛出一个线程状态异常。因为当一个线程start之后,就从new的状态转换到了Runnable状态。无论是在Runnable状态还是执行完毕后到了terminated状态,都是无法在返回到new状态的,所以无法再次start。 ? ??????? 设置守护线程 守护线程: 例子:又main线程开启的子线程,当main线程关闭时,子线程若仍然在执行,那么是不会退出的。如果我们想让main线程结束以后,使得子线程也关闭。那么称其为守护线程。 package Thread_; /** * @program:多线程和IO * @descripton:守护线程 * @author:ZhengCheng * @create:2021/9/15-11:01 **/ public class Thread07 { public static void main(String[] args) throws InterruptedException { DaemonThread dt = new DaemonThread(); //开启守护线程,注意先设置再启动 dt.setDaemon(true); dt.start(); for (int i = 0; i < 10; i++) { Thread.sleep(100); System.out.println("main在工作"); } } } class DaemonThread extends Thread{ @Override public void run() { while (true){ try { Thread.sleep(50); } catch (InterruptedException e) { e.printStackTrace(); } System.out.println("子线程"); } } } ???????? yield和join 控制线程礼让:yield? ,让出cpu让其他线程进行,但是礼让的时间不确定,也不一定能够礼让成功。只有当cpu资源紧张时,礼让的成功率才会提高。 控制线程的插队:join。线程的插队。插队的线程一旦成功,则肯定先全部执行完插入线程的的所有任务 package Thread_; /** * @program:多线程和IO * @descripton:线程的礼让和插队 * @author:ZhengCheng * @create:2021/9/15-10:24 **/ public class Thread06 { public static void main(String[] args) throws InterruptedException { AA aa = new AA(); aa.start(); for (int i = 0; i < 20; i++) { Thread.sleep(100); System.out.println(i+"hi"); if (i==5){ //Thread.yield();//yield未礼让成功 aa.join//但是用join可行 } } } } class AA extends Thread{ @Override public void run() { for (int i = 0; i < 20; i++) { try { Thread.sleep(100); } catch (InterruptedException e) { e.printStackTrace(); } System.out.println("hello"+i); } } } ? |
|
PHP知识库 最新文章 |
Laravel 下实现 Google 2fa 验证 |
UUCTF WP |
DASCTF10月 web |
XAMPP任意命令执行提升权限漏洞(CVE-2020- |
[GYCTF2020]Easyphp |
iwebsec靶场 代码执行关卡通关笔记 |
多个线程同步执行,多个线程依次执行,多个 |
php 没事记录下常用方法 (TP5.1) |
php之jwt |
2021-09-18 |
|
上一篇文章 下一篇文章 查看所有文章 |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 | -2024/11/16 11:24:49- |
|
网站联系: qq:121756557 email:121756557@qq.com IT数码 |