线程基础
一、认识java里的线程
1)java里的程序天生都是多线程的
public static void main(String[] args) {
ThreadMXBean threadMXBean = ManagementFactory.getThreadMXBean();
ThreadInfo[] threadInfos = threadMXBean.dumpAllThreads(false, false);
for (ThreadInfo threadInfo : threadInfos) {
System.out.println("["+threadInfo.getThreadId()+"]"+" "+threadInfo.getThreadName());
}
}
/**
* [6] Monitor Ctrl-Break
* [5] Attach Listener
* [4] Signal Dispatcher
* [3] Finalizer
* [2] Reference Handler
* [1] main
*/
可以看出我们只是启动了一个main方法,java虚拟机也给我们启动了6个线程,所以我们说java里的程序天生都是多线程的
二、java中启动多线程的三种方式
以下内容学习自:https://blog.csdn.net/m0_38075425/article/details/81606156
1.继承Thread类
通过继承Thread类来创建并启动多线程步骤如下:
1、定义Thread类的子类,并重写该类的run()方法,该run()方法的方法体就代表了线程需要完成的任务。因此把run方法称为线程执行体。
2、创建Thread子类的实例,即创建了线程对象。
3、调用线程对象的start()方法来启动该线程。
private static class testThread extends Thread{
@Override
public void run() {
for (int i = 0; i < 10 ; i++) {
System.out.println(Thread.currentThread().getName()+" 执行了 "+i);
}
}
}
//测试
public static void main(String[] args) {
new testThread().start();
for (int i = 0; i < 10 ; i++)