zoukankan      html  css  js  c++  java
  • 多线程

    多线程:

      什么是线程: 

          线程就是程序中单个的顺序执行流程,是一条执行路径;

            单线程:一个进程中如果有一条执行路径就是单线程

            多线程:一个程序中如果有多条执行路径就是多选线程.

      线程和进程的关系:

          进程负责获取资源,进程负责执行任务.一个进程中至少有一个线程.

    多线程的作用:

        提高cpu的执行效率

        在java中实现线程的两种方式

            方式一: 继承thread类

             方式二:实现Ranable接口

      线程类中的两个方法:

          run方法:业务代码的重构 ,start方法启动线程

          设置和获取线程名称

            setName()设置线程名

          getName 返回此线程的名称

          CurrenThread 获取正在活动的线程对象的引用

      线程的优先级

        在java中线程的优先级有10级 最高为10 最低为1 

        最高级和最低级没有必然的优先关系,只是有概率优先.

       线程的调度模式

          java中的线程调度模式为抢占式调度模式

          还有分时调度模型

      线程控制

        sleep (毫秒数)使当前正在执行的线程停留指定的毫秒数(此方法会占用cpu时间片)

        join() 等待这个线程死亡,才会执行别的线程

        setDaemeon(true) 设置线程为守护线程

          线程的生命周期

          创建-->启动 ->就绪->运行->死亡(变成垃圾被回收)

        

      多线程引发的一系列问题

          多线程会引发多个线程操作一个数据区时导致数据出现安全问题

            1数据安全问题出现的条件

                1多线程环境

                2共享数据  

                3多条语句操作共享数据

          如何解决多线程问题

              基本思想:让程序没有安全问题的环境

          1奖代码锁起来,任意时刻只能有一个想成执行

             1 同步代码块

              2同步方法  锁是this

            3同步静态方法 锁是类名,class 是字节码文件

        线程安全的类 有什么

            1StringBuffer

            2vector 该类在1.2版本后 java collections framework 成员 该类实现了list接口

          lock锁

          lock是一个接口不能被实例化  因此我们将借助它的实现类ReentrantLock来进行实例化

            lock l = new ReentrantLock();

        lock锁对象提供两个方法

            1lock()加锁

            2unlock()解锁

        多线程中的经典案例 生产者消费之

            所谓生产者模式  包含了连个线程  1一个是生产者线程 2 一个是消费者线程

            为了解耦生产者和消费者之间的关系,通常会采用数据个公共区,并不需要关心生产者的行为

          objiect类的等待和唤醒方法

            notyify() 唤醒正在等待对象监视器的单个线程,自己进入监听状态

            notyifuall() 唤醒所有等待对象监视器的单个线程,自己进入监听状态

          wait() 导致当前线程进入监听状态,直到另一个线程调用该对象的notifiy方法.

          

  • 相关阅读:
    项目启动报错:No suitable driver found for jdbc:oracle:thin:@192.168.7.146:1521:oracle
    (八)Oracle学习笔记—— 触发器
    (七)Oracle学习笔记—— 游标
    spring自动装配(No qualifying bean )
    Intellij output 中文乱码
    使用Spring开发和监控线程池服务
    IDEA在编辑时提示could not autowire
    java 过滤器(Filter)与springMVC 拦截器(interceptor)的实现案例
    Java过滤器(Filter)与SpringMVC拦截器(Interceptor)之间的关系与区别
    idea 添加多模块项目
  • 原文地址:https://www.cnblogs.com/qmk-716/p/11758920.html
Copyright © 2011-2022 走看看