zoukankan      html  css  js  c++  java
  • 多线程(一)

    进程和线程

    • 进程作为资源分配的基本单位

    • 线程作为资源调度的基本单位,是程序的执行单元,执行路径(单线程:一条执行路径,多线程:多条执行路径)。是程序使用CPU的最基本单位

    线程有3个基本状态

    • 执行、就绪、阻塞

    线程有5种基本操作

    • 派生、阻塞、激活、 调度、 结束

    并行和并发

    并行:

    • 并行性是指同一时刻内发生两个或多个事件。

    • 并行是在不同实体上的多个事件

    并发:

    • 并发性是指同一时间间隔内发生两个或多个事件。

    • 并发是在同一实体上的多个事件

    由此可见:并行是针对进程的,并发是针对线程的

    创建多线程

    • 继承Thread,重写run方法

    • 实现Runnable接口,重写run方法

    run()和start()方法区别:

    • run():仅仅是封装被线程执行的代码,直接调用是普通方法

    • start():首先启动了线程,然后再由jvm去调用该线程的run()方法。

    jvm虚拟机的启动是单线程的还是多线程的?

    • 是多线程的。不仅仅是启动main线程,还至少会启动垃圾回收线程的。

    既然有两种方式实现多线程,我们使用哪一种???

    一般我们使用实现Runnable接口

    • 可以避免java中的单继承的限制

    • 应该将并发运行任务和运行机制解耦,因此我们选择实现Runnable接口这种方式

    守护线程

    守护线程是为其他线程服务的

    • 垃圾回收线程就是守护线程~

    守护线程有一个特点

    • 当别的用户线程执行完了,虚拟机就会退出,守护线程也就会被停止掉了。

    • 也就是说:守护线程作为一个服务线程,没有服务对象就没有必要继续运行

    使用线程的时候要注意的地方

    1. 在线程启动前设置为守护线程,方法是setDaemon(boolean on)

    2. 使用守护线程不要访问共享资源(数据库、文件等),因为它可能会在任何时候就挂掉了。

    3. 守护线程中产生的新线程也是守护线程

    4. 守护线程可以自己退出,非守护线程只能手动退出,所以垃圾回收是守护线程,因为需要回收完之后自己退出,然后退出JVM

  • 相关阅读:
    走向变态的人生
    HDWIKI 4.0.2绿色版(含运行环境)(V1)
    centos7 安装python3.7.1
    一种高并发流控程序的简单轻量实现
    编写JDBC框架优化CRUD操作
    一段阻塞队列代码的纠错与优化
    一次请求在同一个事务实现
    创建Java内部类的编译错误处理
    C++模板简单分析与举例
    java.lang.OutOfMemoryError处理错误
  • 原文地址:https://www.cnblogs.com/yjh1995/p/13514619.html
Copyright © 2011-2022 走看看