线程入门学习

学习内容:

线程基础知识了解:

    进程:运行中的程序,操作系统会为该进程分配内存空间,是指程序的一次执行过程。

    单线程:同一时刻,只允许执行一个线程。

    多线程:同一时刻允许执行多个线程。

    并发:同一时刻,多个线程交替执行(单核CPU)

    并行:同一时刻,多个任务同时执行(多核CPU)

    进程并不会因为主线程的终止而终止,只有当进程中的所有线程都结束之后才会结束。

创建线程的方式:

        1.继承Thread类。

        2.实现Runnable接口。

        3.实现Callable接口。

        4.从线程池中获取。

Thread:

        在执行的时候会先去调用 .start 来启用一个线程,如果直接去掉 .run方法的话还是在当前线程中执行代码,会造成代码串行化。

        注意:.strat方法中有一个 .start0方法,真正实现多线程的时start0方法,它是通过调用底层Native方法来实现多线程效果的,它是由JVM来实现调用的。

        调用start方法之后,该线程不会立刻执行,只是将线程状态变成了可运行状态,具体什么时候执行取决于CPU的调度。

Runnable:

        不能调用start方法,创建了Thread对象,把对象(实现Runnable)放入Thread然后再执行start方法就可以执行run方法(因为这里使用到了静态代理模式)。

线程结束方式:

        用户线程:当线程的任务执行完或通知方式结束。

        守护线程:一般是为工作线程服务的,当所有用户线程结束,守护线程会自动结束

        常见的守护线程:垃圾回收机制

        将线程设置成守护线程: 线程名.setDaemon(true)

线程生命周期:

        new : 尚未启动,或者说是刚刚创建一个线程。

        Runnable: Java虚拟机中执行的线程处于此状态,内部分为Ready和Running。

        Blocked:被阻塞,当遇到上锁的资源时,当前线程会进入阻塞状态,当获得锁之后会再次进入到Runnable状态。

        waiting:等待状态,当线程使用waite方法的时候会进入这个状态,当使用notify方法或者notifyall方法时就会唤醒这个线程。

        Time_waiting:超时等待状态,当使用sleep方法时就会进入这个状态,当睡眠时间结束之后,线程会再次进入Runnable状态。

        Terminated:线程终止状态,当线程运行结束时就会进入终止状态。

线程同步机制:

        在多线程编程中,一些敏感数据不允许被多个线程同时访问,此时就使用同步机制,保证数据再任何时候最多有一个线程访问,以保证数据的完整性,会使用到Synchronized锁。

互斥锁:

        每一个对象都对应可称为互斥锁标记,这个标记用来保证在任一时候只有一个线程访问该对象,同步方法(非静态)的锁加在对象上,同步方法(静态)的锁加在类上。

线程死锁:

        当前有两个线程,相互占有对方所需要的资源,又不放弃已占有的资源造成的问题。

释放锁:

        1.代码正常运行至结束。2.同步方法中又break,return。3.在运行代码时报错,或出现异常。4.执行了waite方法,当前线程暂停。

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值