zoukankan      html  css  js  c++  java
  • JAVA基础——线程

    1.单线程和多线程

    单线程:.一个程序 只有一条线程(主线程main)

    多线程:一个程序 除了一条主线程main 以外 还拥有很多的子线程

    1. 效率高
    2. 开销少
    3. 容易调度(启用)(CPU直接调度)
    4. 高并发性

    2.线程和进程

    线程:.程序运行中的一条执行路径,是组成进程(程序)的  一个进程 必须拥有一条线程(主线程(main))

    1. 线程不能离开进程而独活
    2. 系统不为线程分配资源
    3. 多个线程共享进程的资源

    进程:操作系统上运行的一个程度(可以简单的理解成一个程序)

    1. 进程是程序运行的基本单位(一个程序 必须拥有一个进程(可以拥有多个))
    2. 进程拥有独立的系统资源(系统为为其主动的分配资源 : cpu 磁盘……)

    3.线程和进程的关系

    进程:进程是线程的容器,一个进程可以拥有多个线程

    线程:线程是进程的实体,一个线程必须拥有一个父进程

    • 系统会把资源分配给进程 同一个进程中的所有线程 共享次资源

    4.线程和进程区别

    1.进程拥有系统资源;线程不拥有系统资源,它和其他线程共享所在进程的资源

    2.进程拥有独立的数据空间;线程直接共享相同的数据空间

    所以:

    1. 进程可以独立进行,线程必须在进行中运行
    2. 进程的创建、撤销、和切换,其系统开销要比线程大
    3. 线程之间通信要比进程之间通信要简单

    5.并发和并行

    并发:多个线程 更具CPU的调度情况 执行

    并行:多个线程 同时执行

    6.线程的创建

    方法一:

    继承Thread类

    1. 创建一个类继承Thread类
    2. 覆写run方法(子线程做的事情 写在run方法中)

    3. 启动线程(调用start())

    方法二:

    实现Runnable接口

    1. 创建一个类实现Runnable接口
    2. 覆写run方法(子线程做的事情 写在run方法中)
    3. 启动线程(调用start())

    注意:实现Runnable接口,只是拿到了run方法,通过这种方式创建的线程,不是一个真正的线程

    7.线程的常用方法

    currentThread():获取当前线程对象

    sleep():休眠: 可以让线程睡一会
     yield():礼让   当前线程 主动放弃Cpu的资源 让其他线程去抢占 但是 放弃的时间不确定 有可能刚刚让出去 马上自己又抢回来
    setPriority():设置优先级
                       优先级:1~10 10最高
                       默认是5;
     join():调用以后  等待代用的线程结束以后 再继续执行
    isAlive(): 判断线程是否活着
    interrupt():中断线程(并不是说调用以后线程就停止  该方法 仅仅知识修改了线程中断的标识)
    默认的中断标识:false

    线程被中断: 中断标识改为true

    8.线程的生命周期

    线程的生命周期:从线程的创建到线程的结束

    9.同步

    synchronized:同步锁,保证资源,同一时间,只能被同一条线程访问

     

     

  • 相关阅读:
    怎样跟踪来访用户?
    五个瓶颈影响你的Asp.Net程序(网站)性能
    if判断与比较操作符gt、lt、eq等的使用
    裸机LCD驱动配置
    汇编指令-位置无关码(BL)与绝对位置码(LDR)(2)
    汇编指令-MRS(读)和MSR(写)指令操作CPSR寄存器和SPSR寄存器使用(1)
    Nand Flash驱动(实现初始化以及读操作)
    makefile使用.lds链接脚本以及 $@ ,$^, $,< 解析
    makefile初步制作,arm-linux- (gcc/ld/objcopy/objdump)详解
    Liunx-常用命令杂烩(5)
  • 原文地址:https://www.cnblogs.com/huan-guo/p/8550677.html
Copyright © 2011-2022 走看看