多线程基本概念
进程:程序的基本执行实体
线程:操作系统能够进行运算调度的最小单位,包含在进程之中
多线程:在等待线程的时间,处理其他线程,提高计算机处理效率以减小资源的占用并发:在同一时间,多个指令在单个 CPU 上交替进行
并行:在同一时间,多个指令在多个 CPU 上同时进行
多线程的基本使用
java Tread 类的实用:
public class Main {public static void main(String[] args) {ThreadText threadText1 = new ThreadText();threadText1.setName("测试线程1");ThreadText threadText2 = new ThreadText();threadText2.setName("测试线程2");//程序在执行打印语句时,两个线程被执行是随机的threadText1.start();threadText2.start();}
}
实现 TheadText 线程,继承 Thead 类,重新 run 方法
/*** 自定义线程*/
public class ThreadText extends Thread{@Overridepublic void run() {for(int i=0;i<100;i++){System.out.println( this.getName() + ": 花下的晚风");}}
}
运行结果:
测试线程1: 花下的晚风
测试线程1: 花下的晚风
测试线程1: 花下的晚风
测试线程1: 花下的晚风
测试线程2: 花下的晚风
测试线程2: 花下的晚风
测试线程1: 花下的晚风
测试线程2: 花下的晚风
测试线程2: 花下的晚风
测试线程1: 花下的晚风
测试线程1: 花下的晚风
测试线程1: 花下的晚风
测试线程2: 花下的晚风
测试线程2: 花下的晚风
测试线程1: 花下的晚风
测试线程1: 花下的晚风
测试线程2: 花下的晚风
测试线程1: 花下的晚风
测试线程1: 花下的晚风
测试线程2: 花下的晚风
测试线程2: 花下的晚风
测试线程1: 花下的晚风
测试线程1: 花下的晚风
测试线程2: 花下的晚风
测试线程2: 花下的晚风
测试线程2: 花下的晚风
测试线程2: 花下的晚风
测试线程2: 花下的晚风
测试线程2: 花下的晚风
测试线程2: 花下的晚风
测试线程2: 花下的晚风
测试线程2: 花下的晚风
测试线程1: 花下的晚风
测试线程1: 花下的晚风
测试线程2: 花下的晚风
测试线程2: 花下的晚风
测试线程1: 花下的晚风
测试线程2: 花下的晚风
测试线程2: 花下的晚风
测试线程1: 花下的晚风
测试线程1: 花下的晚风
测试线程1: 花下的晚风
测试线程1: 花下的晚风
测试线程2: 花下的晚风
测试线程2: 花下的晚风
测试线程2: 花下的晚风
测试线程2: 花下的晚风
测试线程2: 花下的晚风
测试线程2: 花下的晚风
测试线程2: 花下的晚风
测试线程2: 花下的晚风
测试线程2: 花下的晚风
测试线程2: 花下的晚风
测试线程2: 花下的晚风
测试线程1: 花下的晚风
测试线程1: 花下的晚风
测试线程1: 花下的晚风
测试线程2: 花下的晚风
测试线程2: 花下的晚风
测试线程1: 花下的晚风
测试线程2: 花下的晚风
测试线程1: 花下的晚风
测试线程1: 花下的晚风
测试线程2: 花下的晚风
测试线程2: 花下的晚风
测试线程2: 花下的晚风
测试线程1: 花下的晚风
测试线程2: 花下的晚风
测试线程2: 花下的晚风
测试线程1: 花下的晚风
测试线程1: 花下的晚风
测试线程2: 花下的晚风
测试线程2: 花下的晚风
测试线程1: 花下的晚风
测试线程1: 花下的晚风
测试线程2: 花下的晚风
测试线程2: 花下的晚风
测试线程1: 花下的晚风
测试线程1: 花下的晚风
测试线程2: 花下的晚风
测试线程2: 花下的晚风
测试线程1: 花下的晚风
测试线程1: 花下的晚风
测试线程2: 花下的晚风
测试线程2: 花下的晚风
测试线程2: 花下的晚风
测试线程1: 花下的晚风
测试线程1: 花下的晚风
测试线程2: 花下的晚风
测试线程2: 花下的晚风
测试线程1: 花下的晚风
测试线程2: 花下的晚风
测试线程2: 花下的晚风
测试线程1: 花下的晚风
测试线程1: 花下的晚风
测试线程2: 花下的晚风
测试线程1: 花下的晚风
测试线程1: 花下的晚风
测试线程1: 花下的晚风
测试线程1: 花下的晚风
测试线程2: 花下的晚风
测试线程2: 花下的晚风
测试线程1: 花下的晚风
测试线程2: 花下的晚风
测试线程2: 花下的晚风
测试线程1: 花下的晚风
测试线程2: 花下的晚风
测试线程2: 花下的晚风
测试线程2: 花下的晚风
测试线程2: 花下的晚风
测试线程2: 花下的晚风
测试线程2: 花下的晚风
测试线程2: 花下的晚风
测试线程2: 花下的晚风
测试线程1: 花下的晚风
测试线程1: 花下的晚风
测试线程2: 花下的晚风
测试线程2: 花下的晚风
测试线程1: 花下的晚风
测试线程1: 花下的晚风
测试线程2: 花下的晚风
测试线程2: 花下的晚风
测试线程1: 花下的晚风
测试线程1: 花下的晚风
测试线程1: 花下的晚风
测试线程2: 花下的晚风
测试线程2: 花下的晚风
测试线程1: 花下的晚风
测试线程1: 花下的晚风
测试线程2: 花下的晚风
测试线程1: 花下的晚风
测试线程1: 花下的晚风
测试线程2: 花下的晚风
测试线程2: 花下的晚风
测试线程1: 花下的晚风
测试线程1: 花下的晚风
测试线程2: 花下的晚风
测试线程2: 花下的晚风
测试线程1: 花下的晚风
测试线程1: 花下的晚风
测试线程2: 花下的晚风
测试线程2: 花下的晚风
测试线程1: 花下的晚风
测试线程1: 花下的晚风
测试线程1: 花下的晚风
测试线程2: 花下的晚风
测试线程2: 花下的晚风
测试线程1: 花下的晚风
测试线程1: 花下的晚风
测试线程1: 花下的晚风
测试线程1: 花下的晚风
测试线程1: 花下的晚风
测试线程1: 花下的晚风
测试线程1: 花下的晚风
测试线程1: 花下的晚风
测试线程1: 花下的晚风
测试线程1: 花下的晚风
测试线程1: 花下的晚风
测试线程1: 花下的晚风
测试线程1: 花下的晚风
测试线程1: 花下的晚风
测试线程1: 花下的晚风
测试线程1: 花下的晚风
测试线程1: 花下的晚风
测试线程1: 花下的晚风
测试线程1: 花下的晚风
测试线程2: 花下的晚风
测试线程2: 花下的晚风
测试线程1: 花下的晚风
测试线程1: 花下的晚风
测试线程1: 花下的晚风
测试线程2: 花下的晚风
测试线程2: 花下的晚风
测试线程1: 花下的晚风
测试线程1: 花下的晚风
测试线程1: 花下的晚风
测试线程1: 花下的晚风
测试线程1: 花下的晚风
测试线程2: 花下的晚风
测试线程2: 花下的晚风
测试线程1: 花下的晚风
测试线程1: 花下的晚风
测试线程2: 花下的晚风
测试线程2: 花下的晚风
测试线程1: 花下的晚风
测试线程1: 花下的晚风
测试线程1: 花下的晚风
测试线程1: 花下的晚风
测试线程2: 花下的晚风
测试线程2: 花下的晚风
测试线程1: 花下的晚风
测试线程1: 花下的晚风
测试线程2: 花下的晚风
测试线程2: 花下的晚风
测试线程2: 花下的晚风
测试线程2: 花下的晚风
测试线程2: 花下的晚风
测试线程2: 花下的晚风
测试线程2: 花下的晚风
测试线程2: 花下的晚风Process finished with exit code 0