进程线程加锁的两种方式Object和类名.class

进程
进程的概念
进程就是正在运行的程序,他会占用对应的内存区域,由cpu进行执行与计算
进程的特点
独立性
进程是系统中独立存在的实体,他可以拥有自己的独立资源,每个进程都有自己私有的地址空间,在没有经过进程本身允许下,一个用户进程不可以直接访问其他进程的地址空间
动态性
进程与程序的区别在于,程序只是一个静态的指令集和,而进程是一个正在系统中活动的指令集和,程序加入了时间概念以后,成为进程,具有自己的生命周期和各种状态,这些概念都是程序所不具备的
并发性
多个进程可以在单个处理器cpu上并发执行,多个进程之间不会互相影响
线程
线程的概念
线程是操作系统os能够进行运算调度的最小单位,它被包含在进程之中,是进程中的实际运作单位,一个进程可以开启多个线程,其中有一个主线程来调用本进程中的其他线程。
我们看到的进程的切换,切换的也是不同进程的主线程
多线程可以让同一个进程同时并发处理多个任务,相当于扩展了进程的功能
进程与线程的关系
一个操作系统中可以有多个进程,一个进程中可以包含一个线程(单线程程序),也可以包含多个线程(多线程程序)
在这里插入图片描述
多线程的特性
随机性
串行:同一时刻一个CPU只能处理一件事
并行:同一时刻多个CPU处理多个事
CPU分时调度
1.FCFS:先来先服务算法
2.SJS:短服务算法
线程的状态
就绪状态:线程已经准备好运行,只要获得CPU,就可立即执行
执行状态:线程已经获得CPU,其程序正在运行状态
阻塞状态:正在运行的线程由于某些事件(I/O请求等)暂时无法执行的状态,即线程阻塞
三态模型
在这里插入图片描述
在这里插入图片描述
五态模型
在这里插入图片描述
在这里插入图片描述
多线程编程方案1:继承Thread类

public class TestThread1 {
   
    public static void main(String[] args) {
   
        /*4.new对应的是线程的新建状态
        * 5.要想模拟单线程,至少要启动两个线程,如果只启动一个,是单线程程序*/
        MyThread t1 = new MyThread();
        MyThread t2 = new MyThread();
        MyThread t3 = new MyThread();
        MyThread t4 = new MyThread();
        /*6.这个run()如果直接调用,是没有多线程抢占执行的效果的
        * 只是业务方法看作是普通方法来调用,谁先写就先执行谁
        *
        * 7.start()对应的状态才是线程的就绪状态,它会把刚刚新建好的线程加入到就绪队列中,
        * 至于什么时候执行,就是多线程抢占的效果,需要OS选中分配时间片才会执行
        *
        * 8.执行start()时,底层会自动调用我们重写的业务方法run()
        *
        * 9.线程执行具有随机性,也就说t1-t4具体怎么执行
        * 取决于CPU调度时间片的分配规则,我们是决定不了的*/
        t1.start();
        t2.start
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值