Java Thread 类和Runnable 接口详解
作者:姚青& 时间:2023-11-10 20:16:00
一、Thread 类
了解如何使用Thread 类实现多线程之后,继续学习Thread 类实现多线程之后的相关功能及方法。
1、操作线程名称的方法
构造方法(实现 Runnable 接口时候使用)
public Thread(Runnable target,String name); 创建线程时设置线程名称。
成员方法:
public final void setName(String name); 设置线程的名称。
public final String getName(); 获取线程的名称。
Demo 代码示例:
public class TestThread extends Thread{
@Override
public void run() {
for (int i = 1; i <= 10; i++) {
System.out.println("我正在编写多线程代码"+ i);
}
}
//程序主线程 main 线程
public static void main(String[] args) {
//创建子类对象
TestThread thread = new TestThread();
// 设置线程名称
thread.setName("姚青新创建的线程");
//调用 start() 方法开启线程
thread.start();
for (int i = 1; i <= 10; i++) {
System.out.println("我正在学习多线程"+ i);
}
// 获取线程名称
System.out.println(thread.getName());
}
}
运行结果:
2、获取当前正在执行的线程
public static Thread currentThread(); 返回当前正在执行的线程对象
获取当前线程对象:Thread.currentThread();
获取当前线程对象名称 :Thread.currentThread().getName();
Demo代码示例:
public class TestThread extends Thread{
@Override
public void run() {
for (int i = 1; i <= 5; i++) {
System.out.println("我正在编写多线程代码"+ i);
}
// 获取start()方法创建出来的线程对象
System.out.println(Thread.currentThread());
// 获取start()方法创建出来的线程对象名称
System.out.println(Thread.currentThread().getName());
}
public static void main(String[] args) {
TestThread thread = new TestThread();
thread.setName("姚青新创建的线程");
thread.start();
for (int i = 1; i <= 5; i++) {
System.out.println("我正在学习多线程"+ i);
}
//System.out.println(thread.getName());
// 获取main()主线程对象名称
System.out.println(Thread.currentThread().getName());
}
}
运行结果:
通过运行结果可以发现,在控制台上分别打印出了 “main”、“Thread[姚青新创建的线程,5,main]”、“姚青新创建的线程”,可以看出将新创建的线程对象和对象名称以及主方法的线程名称都打印出来了。
在使用这个方法的时候需要注意一点,该方法固定的写法就是 Thread.currentThread(); 放在那个线程中执行这个方法就是指定的那个线程。
来源:https://blog.csdn.net/shiyu_951/article/details/126226538
标签:Java,Thread,类,Runnable,接口
![](/images/zang.png)
![](/images/jiucuo.png)
猜你喜欢
C#短时间内产生大量不重复的随机数
2023-11-28 00:15:53
Android中选项菜单(OptionMenu)的创建方法
2021-06-08 14:14:42
MyBatis动态SQL特性详解
2022-10-03 03:21:50
![](https://img.aspxhome.com/file/2023/4/77974_0s.png)
利用Java+Selenium+OpenCV模拟实现网页滑动验证
2021-07-23 02:45:18
![](https://img.aspxhome.com/file/2023/4/91474_0s.gif)
Java流程控制语句最全汇总(上篇)
2023-11-03 01:57:48
![](https://img.aspxhome.com/file/2023/0/58850_0s.jpg)
Java中常见的陷阱题及答案
2021-08-10 16:32:11
解决mybatis update并非所有字段需要更新问题
2022-12-09 10:20:55
![](https://img.aspxhome.com/file/2023/9/61599_0s.jpg)
关于C#中的Invoke示例详解
2023-06-20 10:17:14
Spring Boot集成MyBatis的方法
2021-11-03 23:11:05
![](https://img.aspxhome.com/file/2023/6/64486_0s.png)
SpringBoot深入分析讲解监听器模式上
2022-06-25 21:04:04
![](https://img.aspxhome.com/file/2023/3/62363_0s.png)
Android 中的危险权限详细整理
2023-12-03 09:07:25
Kotlin数据容器深入讲解
2022-03-28 05:19:34
![](https://img.aspxhome.com/file/2023/2/116032_0s.png)
mybatis中insert主键ID获取和多参数传递的示例代码
2023-09-20 07:11:00
Java实现双向循环链表
2023-11-08 04:14:40
java在linux本地执行shell命令的实现方法
2023-11-14 02:31:33
![](https://img.aspxhome.com/file/2023/9/59569_0s.png)
简单了解JAVA public class与class区别
2023-11-15 23:59:26
![](https://img.aspxhome.com/file/2023/5/59675_0s.png)
浅谈C#跨线程调用窗体控件(比如TextBox)引发的线程安全问题
2022-03-16 06:35:41
Spring Boot 集成Dubbo框架实例
2022-02-03 21:23:27
C#中标准的IDispose模式代码详解
2022-03-27 01:40:05
![](https://img.aspxhome.com/file/2023/2/81152_0s.png)
Java Boolean 初始化方式详解
2021-10-09 15:20:07