java 多线程
2022/2/25 1:30:39
本文主要是介绍java 多线程,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!
Thread类
表示线程,也叫作线程类,创建该类的对象,就是创建线程对象(或者说创建线程)
要会使用Thread类的构造方法和常用方法
构造方法
public Thread()
public Thread(String name)
public Thread(Runnable target)
public Thread(Runnable target,String name)
常用方法
Public String getName()
Public void start()
Public void run()
Public static void sleep(long millis)
Public static Thread currentThread()
目前只分享创建线程的2种方式:
1通过继承Thread类的方式
2通过实现Runnable接口的方法
(Runnable 接口:线程任务接口)
创建线程
方法一:继承Thread类
1 创建子类继承Thread类
2 在子类中重写run方法,
把线程需要执行的代码放在run方法中
3 创建子类线程对象
4 调用start()方法启动线程,执行任务代码
public class test { public static void main(String[] args) { MyThread mt1 = new MyThread(); mt1.start(); for (int j = 0; j < 100; j++) { System.out.println("主线程 第"+(j+1)+"次循环"); } } }
public class MyThread extends Thread {
@Override public void run() { for (int i = 0; i < 100; i++) { System.out.println("子线程第"+(i+1)+"次循环"); } } }
Java程序至少有2条线程,
一条为主线程,一条为垃圾回收线程
创建线程第2种方式:通过实现的方式
1 创建实现类实现Runnable接口
2 在实现类中重写run方法,把线程需要执行的任务代码放入run方法中
3 创建实现类对象
4 创建Thread线程对象,并传入Runnable接口的实现类对象
5 调用start()方法启动线程,执行任务
public class MyRunnable implements Runnable { @Override public void run() { for (int i = 0; i < 100; i++) { System.out.println("子线程 第"+(i+1)+"次循环"); } } }
public class test { public static void main(String[] args) { MyRunnable mr = new MyRunnable(); Thread t1 = new Thread(mr); t1.start(); for (int j = 0; j < 100; j++) { System.out.println("主线程 第"+(j+1)+"次循环"); } } }
创建线程第3种方法:匿名内部类(由第二种方法演变)
1 创建Runnable的匿名内部类
2 在匿名类内部重写run()方法
3 创建Thread线程对象,并传入Runnable匿名内部类
4 调用start()方法
public class test { public static void main(String[] args) { Thread t1 = new Thread(new Runnable() { @Override public void run() { for (int i = 0; i < 100; i++) { System.out.println("子线程 第"+(i+1)+"次循环"); } } }); t1.start(); for (int j = 0; j < 100; j++) { System.out.println("子线程 第"+(j+1)+"次循环"); } } }
备注:
1 主线程一定会等子线程全部执行完毕才会结束主线程
2 子线程任务代码执行完毕,线程就会销毁
这篇关于java 多线程的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!
- 2024-07-02springboot项目无法注册到nacos-icode9专业技术文章分享
- 2024-06-26结对编程到底难不难?答案在这里
- 2024-06-19《2023版Java工程师》课程升级公告
- 2024-06-15matplotlib作图不显示3D图,怎么办?
- 2024-06-1503-Loki 日志监控
- 2024-06-1504-让LLM理解知识 -Prompt
- 2024-06-05做软件测试需要懂代码吗?
- 2024-06-0514-ShardingSphere的分布式主键实现
- 2024-06-03为什么以及如何要进行架构设计权衡?
- 2024-05-31全网首发第二弹!软考2024年5月《软件设计师》真题+解析+答案!(11-20题)