栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

程序,进程,线程;内存结构图;线程的创建和启动;Thread的常用方法

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

程序,进程,线程;内存结构图;线程的创建和启动;Thread的常用方法

目录
  • 程序 进程 线程的基本概念
    • 程序
    • 进程
    • 线程
    • 并行和并发
  • 内存结构图
  • 线程的创建和启动
    • Thread类的特性
    • 方式一:继承Thread
  • Thread的常用方法
    • start()
    • run()
    • String getName()
    • void setName(String name)
    • static Thread currentThread()
    • yield()
    • join()
    • static void sleep(long millis)
    • stop()
    • boolean isAlive()

程序 进程 线程的基本概念 程序

为完成特定任务,用某种语言编写的一组指令的集合。即指一段静态的代码,静态对象。

进程

是程序的一次执行过程,或是正在运行的一个程序。是一个动态的过程:有它自身的产生,存在和消亡的过程,即生命周期。
是资源分配的单位,系统在运行时会为每个进程分配不同的内存区域。

线程

进程可进一步细化为线程,是一个程序内部的一条执行路径。
一个Java应用程序java.exe,至少会有三个线程:main(主线程) gc()垃圾回收线程,异常处理线程
线程作为调度和执行的单位,每个线程拥有独立的运行栈和程序计数器,线程切换的开销小。
一个进程中的多个线程共享相同的内存单元/内存地址空间->它们从同一堆中分配对象,可以访问相同的变量和对象。这就使得线程间通信更简便高效,但多个线程操作共享的系统资源可能就会带来安全隐患。

并行和并发

并行:多个CPU同时执行多个任务
并发:一个CPU同时执行多个任务

内存结构图

多个线程共享方法区和堆,每个线程有自己的虚拟机栈和程序计数器

线程的创建和启动

Java语言的JVM允许程序运行多个线程,它通过java.lang.Thread类来体现。

Thread类的特性
  1. 每个线程都是通过某个特定Thread对象的run()方法来完成操作的,经常把run()方法的主体称为线程体。
  2. 通过该Thread对象的start方法()来启动这个线程,而非直接调用run()
方式一:继承Thread
  1. 创建继承于Thread类的子类
  2. 重写Thread类的run()方法,该线程需要执行的操作可以声明在run方法中。
  3. 创建Thread子类对象
  4. 通过此对象调用start()
//多线程的创建 方式一:继承Thread类
class MyThread extends Thread{
    //重写run方法
    @Override
    public void run() {
        for(int i=0;i<100;i++){
            System.out.println(i);
        }
    }
}
public class ThreadTest {
    public static void main(String[] args) {
        MyThread myThread = new MyThread();
        //启用当前线程并且调用当前线程的run方法 只能调用一次
        myThread.start();
        //打印出来的效果是和run()方法里夹杂的 这说明有两个线程在执行
        for(int i=0;i<100;i++){
            System.out.println(i+"******main线程******");
        }
    }
}
Thread的常用方法 start()

启动线程,并执行对象的run()方法

run()

线程在被调度时执行的操作

String getName()

返回线程的名称

void setName(String name)

设置该线程名称

static Thread currentThread()

返回当前线程。在Thread子类中为this,通常用于主线程和Runnable实现类。

yield()

线程让步,暂停当前正在执行的线程,把执行机会让给优先级相同或者更高的线程。

join()

在线程a中调用线程b的join()方法,此时线程a就进入阻塞状态,直到线程b完全执行完后,线程a才结束阻塞状态。

static void sleep(long millis)

令当前活动线程在指定时间内放弃的CPU控制,使其它线程有机会被执行,时间到后当前线程再开始执行。

stop()

强制线程生命周期结束,已过时不推荐使用

boolean isAlive()

返回boolean,判断线程是否还活着

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/827154.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号