进程与线程

进程

1.进程与线程

  • 进程:

进程是需要通过系统的分配,获取系统当前的CPU,内存,显卡,网络等这些资源

​ 1.独立性

​ 2.互斥性

  • 线程:

线程是组成进程的最小基本单位,每一个进程至少得有一个线程

线程的运行支撑起来进程的运行

线程的特性:

  • 1.抢占式运行【重点】

​ CPU在执行的时候,是按照时间片进行执行的。单位的时间片是相互抢占的 40ms

  • 2…资源共享性

    一个应用程序中的线程可以共享当前的资源。比如CPU,内存,网络

Java程序:

​ 一个java程序就是一个进程 Demo1main主函数 属一个应用程序

​ 一个java应用程序至少有两个线程:

​ 1.main主函数线程

​ 2.jvm 垃圾回收

  • 进程和线程的区别【面试题】

进程是一个完整的程序

线程是进程里面的执行的一个功能。

一个应用程序是由多个线程组成的

进程申请是系统的资源

线程申请是进程的资源

多个线程在执行的时候,cpu会根据每个线程分配的时间片聊来随机抢占执行

每个线程最多占用的时间片大概是20ms,过了时间片,就切换到其他线程了

2.并发和并行

并发:同时发生,轮流交替执行

并行: 真正意义上的同时执行

3.创建线程的两种方式

  • 第一种创建方式

Thread类:

​ 1.声明一个Thread的子类,重写run方法

​ 2.调用start开启线程

  • 第二种创建方式【开发中用的】

​ 1.写一个类去实现Runnable接口,实现run方法

​ 2.实例化Thread类,然后构造器的参数是一个实现Runnable接口的对象

4.线程下面的方法

构造方法:

  • | Thread() | 分配一个新的Thread对象 |
    | ------------------------------------ | -------------------------------------------- |
    | Thread(Runnable target) | 分配一个新的Thread对象。 |
    | Thread(Runnable target, String name) | 分配一个新的 Thread对象,并对当前线程起个名字 |

成员方法:

​ static Thread currentThread();获取当前线程对象

​ static Thread currentThread();获取当前线程对象

getName();获取线程的名字

​ void setName(String name);设置当前线程的名字

​ void setPriority(int newPriority);设置当前线程的优先级。这个优先级只会增加线程执行的概率

​ 但是真正的会不会优先不一定。int类型的参数,所有线程默认的优先级是5 传值 1-10 1的优先级是最低的,10优先级是最高的

​ int getPriority();获取当前线程优先级的

​ setProioty();设置线程优先级的

​ static void sleep();让线程休眠多少毫秒

​ 在run方法中调用Thread.sleep();只能try-catch不能抛

5.线程的生命周期

线程创建好以后,开启线程start 方法,可运行状态,运行状态,阻塞状态,消亡

创建开启线程: start()

可运行状态:线程在抢占在等待,如果抢到的话就接着往下执行,如果没有抢到就等待

运行状态:真正的执行线程下面run方法

阻塞状态:锁,sleep, wait

消亡状态:线程执行结束以后

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值