zoukankan      html  css  js  c++  java
  • Java学习 · 初识 多线程

    多线程

    1. 基础概念

    a)     程序 Program

                      i.           静态代码,指令集,应用程序执行的蓝本

    b)    进程 Process

                      i.           动态概念,正在运行的程序,有地址空间,操作系统任务调度

                    ii.           特点

    1. 动态性
    2. 并发性
    3. 独立性

    c)     线程 Thread

                      i.           在进程内多条执行路径

                    ii.           轻量级进程

                  iii.           一个进程中运行多个线程,完成不同任务,称为多线程

    d)   

    1. 2.   线程的创建

    a)     继承Thread + 重写run方法

                      i.          

    b)    实现Runnable接口 + 实现Run接口

                      i.           使用静态代理

    1. 创建真实角色
    2. 创建代理角色,Thread + 真实角色的引用
    3. 代理角色.start

                    ii.           两种区别

                  iii.           常用方法

                  iv.           另一种实现

    1. 通过Callable接口实现多线程

    a)    

    b)    思路

                                                     i.           创建 Callable实现类+重写call

                                                   ii.           借助 执行调度服务 ExecutorService,获取Future对象

                                                  iii.           获取值 result.get()

                                                  iv.           停止服务 ser.shutdownNow();

                                                    v.          

    1. 线程状态

    a)    

    b)    停止线程

                      i.           Void interrupt()

    1. 发送中断请求
    2. 如果被Sleep调用阻塞,抛出异常

                    ii.           Static Boolean interrupted()

    1. 测试当前线程是否被中断
    2. 副作用:将当前线程的状态重置为false

                  iii.           Boolean isInterupte()

    1. 没有副作用

                  iv.           Static Thread currentThread()

    1. 返回代表当前执行线程的Thread线程
    1. 同步:并发,多个线程访问同一份资源,确保资源安全  -->线程安全

    a)     关键字synchronized

                      i.           同步块 synchronized

                    ii.           同步方法 synchronized

    1. 5.   死锁:过多的同步引发

    a)     解决:生产者消费者模式

                                              i.       信号灯法

                                            ii.       一、 wait() :等待,释放锁   sleep 不释放锁

                                           iii.       二、notify()/notifyAll():唤醒

                  iv.             与 synchronized 一起使用

  • 相关阅读:
    Spring优势
    Spring中的设计模式
    Spring MVC体系结构
    《Spring3.0就这么简单》第1章快速入门
    InvocationHandler
    JdkDynamicAopProxy源码
    Proxy代理(AOP实现原理)
    Spring AOP 实现原理
    BeanFactory和ApplicationContext的作用和区别
    背景图片相关设置
  • 原文地址:https://www.cnblogs.com/secoding/p/9497863.html
Copyright © 2011-2022 走看看