线程基本方法

1。设置线程名
    继承Thread类的线程,可以直接使用.setName()方法,设置线程名。也可以使用构造方法,需要注意java默认不继承构造方法,所以需要自己调用下父类的构造方法。

public class Demo {public static void main(String[] args) {MyThread myThread1=new MyThread("飞机");myThread1.start();MyThread myThread2=new MyThread();myThread2.setName("火箭");myThread2.start();//当jvm虚拟机启动后,会自动的启动多条线程,其中一条是main主线程//主线程的作用是调用main方法,并执行其中的代码,在以前,我们写的所有代码,其实都是运行在main线程中Thread thread=Thread.currentThread();System.out.println(thread.getName());//获取优先级System.out.println(myThread1.getPriority());//线程的默认优先级都是5,包括main线程}
}
public class MyThread extends Thread {@Overridepublic void run() {for (int i = 0; i < 100; ++i) {try {Thread.sleep(1000);} catch (InterruptedException e) {e.printStackTrace();}//在不设置线程名的情况下,线程名默认是Thread+线程序号System.out.println(getName());}}//构造方法子类默认不继承,所以这里需要通过super关键字调用父类Thread的构造方法,给Thread设置名字public MyThread() {}public MyThread(String name) {super(name);}
}

 实现runnable接口的线程,可以使用.setName方法。但是不能使用构造方法,因为他不像上面继承Thread类的线程,他没有父类的构造方法可以调用。

public class Mythread implements Runnable {@Overridepublic void run() {for (int i = 0; i < 100; ++i) {String name = Thread.currentThread().getName();System.out.println("你好世界!"+"----"+name);}}
}
public class Demo {public static void main(String[] args) {Mythread mythread=new Mythread();Thread t1=new Thread(mythread);t1.setName("线程1");Thread t2=new Thread(mythread);t2.setName("线程2");t1.start();t2.start();//获取优先级System.out.println(t1.getPriority());}
}

2. join方法  当前线程需要等待 调用join方法的线程执行完毕,当前线程才能继续执行

public class Demo {public static void main(String[] args) throws InterruptedException {MyThread myThread = new MyThread();myThread.start();// 在默认情况下,当前线程和在当前线程添加的线程会交替执行// 使用了join方法后,当前线程会等待myThread执行完毕,后继续执行本线程myThread.join();for (int i = 0; i < 10; i++) {Thread.sleep(1);//模拟主线程执行耗时System.out.println(Thread.currentThread().getName());}}
}
public class MyThread extends Thread {@Overridepublic void run() {for (int i = 0; i < 100; ++i) {try {Thread.sleep(1000);} catch (InterruptedException e) {e.printStackTrace();}System.out.println("自定义线程"+i);}}
}

执行结果:MyThread执行完后,才执行main线程的输出语句

3。

setDaemon

守护线程:当其他非守护线程执行完毕,守护线程不管是否执行完毕,都会停止。

就像舔狗(守护线程)和女神(非守护线程),如果女神走了,那舔狗啥都不管,也走。

主线程

public class Demo {public static void main(String[] args) {NvShenThread nvShenThread=new NvShenThread();TianGouThread tianGouThread =new TianGouThread();//将舔狗线程设置为守护线程 守护线程:当其他非守护线程执行完毕,会自动停止守护线程//应用场景:qq聊天和发送文件,聊天框关闭,发送文件也应当停止tianGouThread.setDaemon(true);nvShenThread.start();tianGouThread.start();}
}

女神线程(非守护线程)

public class NvShenThread extends Thread {@Overridepublic void run() {for (int i = 0; i < 10; i++) {try {Thread.sleep(2);} catch (InterruptedException e) {e.printStackTrace();}System.out.println("女神线程执行"+"----"+i);}}
}

舔狗线程(守护线程)

public class TianGouThread extends Thread {@Overridepublic void run() {for (int i = 0; i < 100; i++) {try {Thread.sleep(1);} catch (InterruptedException e) {e.printStackTrace();}System.out.println("舔狗线程执行"+"----"+i);}}
}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/223234.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

powershell获取微软o365 21v日志

0x00 背景 o365 21v为o365的大陆版本&#xff0c;主要给国内用户使用。微软提供了powershell工具和接口获取云上日志。微软o365国内的代理目前是世纪互联。本文介绍如何用powershell和配置证书拉取云上日志。 0x01 实践 第一步&#xff0c;ip权限开通&#xff1a; 由世纪互联…

CGAN原理讲解与源码

1.CGAN原理 生成器&#xff0c;输入的是c和z&#xff0c;z是随机噪声&#xff0c;c是条件&#xff0c;对应MNIST数据集&#xff0c;要求规定生成数字是几。 输出是生成的虚假图片。 判别器的输入是 1.生成器输出的虚假图片x; 2.对应图片的标签c 来自真实数据集&#xff0c;且…

什么是高性能计算岗位

最近有小伙伴咨询什么是高性能计算岗位。 1、什么是高性能计算 高性能计算&#xff0c;在很多招聘信息中也会被标注为 HPC&#xff0c;是 High Performance Computing 的缩写。 目前很多 AI 公司或者从事 AI 的部门招聘都有这个岗位需求&#xff0c;我从某聘上截取了几个有代…

Shopee买家号想要多开怎么解决?

拥有多个Shopee买家号有很多优势。多账号可以帮助卖家获得更多流量、还能帮助提供关键词排名、提高销量等。 但是要管理多个Shopee买家号并非易事。面对不同账号的登录、注销和切换&#xff0c;可能会花费大量的时间和精力。而且&#xff0c;Shopee平台对于使用同一IP地址同时登…

Android Termux SFTP如何实现远程文件传输

文章目录 1. 安装openSSH2. 安装cpolar3. 远程SFTP连接配置4. 远程SFTP访问4. 配置固定远程连接地址 SFTP&#xff08;SSH File Transfer Protocol&#xff09;是一种基于SSH&#xff08;Secure Shell&#xff09;安全协议的文件传输协议。与FTP协议相比&#xff0c;SFTP使用了…

微信api开发接口文档

简要描述&#xff1a; 搜索联系人 请求URL&#xff1a; http://域名地址/searchUser 请求方式&#xff1a; POST 请求头Headers&#xff1a; Content-Type&#xff1a;application/jsonAuthorization&#xff1a;login接口返回 参数&#xff1a; 参数名必选类型说明wI…

通俗易懂的spring Cloud;业务场景介绍 二、Spring Cloud核心组件:Eureka 、Feign、Ribbon、Hystrix、zuul

文章目录 通俗易懂的spring Cloud一、业务场景介绍二、Spring Cloud核心组件&#xff1a;Eureka三、Spring Cloud核心组件&#xff1a;Feign四、Spring Cloud核心组件&#xff1a;Ribbon五、Spring Cloud核心组件&#xff1a;Hystrix六、Spring Cloud核心组件&#xff1a;Zuul七…

redisserver一闪而过 redis闪退解决版本

1.进入Redis根目录 2.输入redis-server 或 redis-server.exe redis.windows.conf 启动redis命令&#xff0c;看是否成功。 执 一闪而过的问题 可能是因为已启动或者其他问题&#xff0c;需要重启 先输入redis-cli.exe再输入shutdown再输入redis-server.exe redis.windows.c…

智能优化算法应用:基于被囊群算法无线传感器网络(WSN)覆盖优化 - 附代码

智能优化算法应用&#xff1a;基于被囊群算法无线传感器网络(WSN)覆盖优化 - 附代码 文章目录 智能优化算法应用&#xff1a;基于被囊群算法无线传感器网络(WSN)覆盖优化 - 附代码1.无线传感网络节点模型2.覆盖数学模型及分析3.被囊群算法4.实验参数设定5.算法结果6.参考文献7.…

交换技术-电路交换-报文交换-分组交换

交换技术是指主机之间、通信设备之间或主机与通信设备之间为交换信息所采用的数据格式和交换装置的方式。按交换技术可分为&#xff1a;电路交换、报文交换和分组交换。 电路交换 交换(switching)&#xff0c;就是按照某种方式动态地分配传输线路的资源。 电路交换是在源结点…

影响机器视觉测量精度的因素有哪些?

精度测量取决于分辨率 在机器视觉测量中提供高精度和低不确定度的决定性因素是获取的图像的分辨率。在这种情况下&#xff0c;术语分辨率 &#xff08;或图像分辨率&#xff09;意味着以实际单位的单个像素的大小。简而言之&#xff0c;如果一个摄像机传感器在水平方向上包含…

Python GUI 图形用户界面程序设计,Python自带 tkinter 库

文章目录 前言GUI介绍简单操作tkinter组件介绍向窗体中添加按钮控件使用文本框控件使用菜单控件使用标签控件使用单选按钮和复选按钮组件使用绘图组件关于Python技术储备一、Python所有方向的学习路线二、Python基础学习视频三、精品Python学习书籍四、Python工具包项目源码合集…