• 多线程与多线程中的并发问题


    子线程的创建方法有两种

    第一种

    类继承Thread类,重写他的run方法

    第二种

    继承Runnable接口,并实现他的run方法

    首先thread这个类也继承了Runnable的接口

    所以其实也是包含其中的

    调用子线程达到多线程的方法

    第一,要启用子线程需要在创建子线程后

    用线程名.start(),如果是线程名.run()的话

    他只是调用了类中的run方法,此时仍然是

    单线程的并不是多线程的这是要注意的

    第二

    两种方法的创建对象方法是有区别的

    如果使用方法一

    Mythread mt=new Mythread();

    我们直接创建对象即可.因为方法继承了接口所以他

    本身就是一个接口.

    方法二我们首先需要定义任务对象

    MyRunnable mr=new MyRunnable()//创建一个任务对象

    然后在创建一个进程对象

    Thread thread=new Thread(mr)//创建一个进程对象并把

    任务对象作为参数传给进程即可,传送任务对象后直接逗号

    可以命名进程,也可以在其他地方使用setname()命名

    使用getname获取姓名,这是一个封装

    还有一种是jdk1.8以后的lambda方法

    直接new Thread(()->{})即可

    括号()就是run方法的参数,注意run方法无参;

    多线程的状态有五种

    正常情况下是

    创建状态-->就绪状态->运行状态->死亡状态

    然而我们有时候需要人为的暂停他,亦或者程序

    出现了不可预期的错误导致的暂停

    因此还有一种状态为阻塞状态

    总计创建状态,就绪状态,阻塞状态,运行状态,死亡状态五种.

    在实现多线程以后发现,会发生并发问题.这个时候我们需要

    使用线程同步来解决遇到的并发问题

    同步方法使用关键字synchronized修饰

    1,同步代码块

    synchronized(this){此处加一个判断;正常要实现的方法体}

    2同步方法

    首先同步方法需要使用synchronized修饰

    public synchronized void 方法名() 

    {一个判断

    要实现的方法

    }

    总结:

    多线程的好处,

    1充分利用CPU资源

    2.简化编程模型

    3提升用户的体验

    多线程要注意的地方

    1.一个线程只做一件事

    2.多线程是指线程交替占用CPU资源,并非真正的并行执行.

  • 相关阅读:
    IOS数据库操作SQLite3使用详解(转)
    AutoLayout 之NSLayoutConstraint
    自动布局autolayout和sizeclass的使用
    IOS 基于TCP的socket通信详解(原创)
    Spring boot AOP 记录请求日志
    Spring boot 异步线程池
    配合 jekins—springboot脚本
    CentOS6 Squid代理服务器的安装与配置
    Redis4.0.1的安装及哨兵模式的配置
    mysql修改最大连接数
  • 原文地址:https://www.cnblogs.com/deemohans/p/11737657.html
Copyright © 2020-2023  润新知