首先理清几个基本概念:
程序:为完成特定任务,用某种语言编写的一组指令的集合。即一段静态的代码(还没运行起来)
进程:是程序的一次执行过程,也就是说程序运行起来了,加载到了内存中,并占用了cpu的资源。这是一个动态的过程:有自身的产生、存在和消亡的过程,这也是进程的生命周期。
线程:进程可进一步细化为线程,是一个程序内部的执行路径。
若一个进程同一时间并行执行多个线程,那么这个进程就是支持多线程的。
线程是cpu调度和执行的单位,每个线程拥有独立的运行栈和程序计数器(pc),线程切换的开销小。
多线程:是指程序当中包含多个执行单元,即在一个程序中可以同时运行多个不同的线程来执行不同的任务,也就是说允许单个线程创建多个并行执行的线程来完成各自的任务。
Java线程的分类:用户线程和守护线程
java的gc()垃圾回收线程就是一个守护线程
守护线程是用来服务用户线程的,通过start()方法前调用thread.serDaemon(True)可以把一个用户线程变成守护线程
并行和并发:
并行:多个cpu同时执行多个任务
并发:一个cpu同时执行多个任务
多线程的优点
提高应用程序的相应。
提高计算机cpu的利用率
改成程序结构。将复杂的进程分成多个线程,独立运行。
线程的创建与启动
多线程实现的原理
java的jvm允许程序运行多个线程,多线程可以通过Java中的java.lang.Thread类来体现
Thread类的特性
每个线程都是通过每个特定的Thread对象的run()方法来完成操作,经常把run()方法的主体称 为线程体
通过Thread方法的start()方法来启动这个线程,而非调用run()
多线程的创建,方式一:继承于Thread类
1.创建一个继承于Thread类的子类
2.重写Thread类的run()方法
3.创建Thread类的子类的对象()
4.通过此对象调用start()来启动一个线程
代码实现:多线程执行同一段代码
package com.Thread.demo1; public class demo1 extends Thread{ @Override public void run(){ for(int i = 0;i<100;i++){ if(i % 2 == 0){ System.out.println(Thread.currentThread().getName() + ":/t" + i); } } } public static void main(String[] args){ demo1 test1 = new demo1(); test1.start(); demo1 test2 = new demo1(); test2.start(); new demo1().start(); System.out.println("主线程"); } }
原创文章,作者:ItWorker,如若转载,请注明出处:https://blog.ytso.com/288536.html