zoukankan      html  css  js  c++  java
  • 【JAVA SE基础篇】54.多线程介绍和创建

    1.多线程学习内容

    1.线程简介

    2.线程实现

    3.线程状态

    4.线程同步

    5.生产消费者

    6.高级主题

    2.线程简介

    多线程是指多条并行路径,多路路径同时执行

    方法间的调用:普通方法调用是闭合一条路径

    多线程使用:开辟了多条路径

    程序、进程和线程都是什么?

    1.程序:一个软件,一个app(静态概念,是代码指令)

    2.进程:在操作系统中运行中的程序(动态概念,一个进程匹配一个程序),例如:用优酷看视频,就是系统中的一个进程

    3.线程:一个进程有多个线程,例如:用优酷看视频,同时有图像,有声音,有弹幕,有字幕

    线程和进程的区分

    1.进程:作为资源分配单位

    2.线程:调度和执行单位

    核心概念

    1.线程就是独立的执行路径

    2.在程序运行时,即使没有自己创建线程,后台也会存在多个线程,如:gc线程,主线程

    3.main()为主线程,为系统的入口点,用于执行整个程序

    4.在一个进程中,如果开辟多个线程,线程运行由调度器安排调度,调度器是与操作系统紧密相关的,先后顺序不能人为改变

    5.对于用一份资源操作时,会存在资源抢夺的问题,需要加入并发控制

    6.线程会带来额外的开销,如cpu调度时间,并发控制开销

    7.每个线程在自己的工作内存交互,加载和储存主内存控制不当会造成数据不一致

    4.线程的创建

    三种方式创建线程

    1.继承Thread类

    2.实现Runable接口

    3.实现Callable接口(并发相关)

    根据面向对象思想,多用实现,少用继承,以便达到多继承功能

    例:

    注:

    1.执行线程时必须调用start(),加入到调度器中

    2.不一定立即执行,系统安排调度分配执行

    3.直接调用run(),不是开启多线程,是普通方法调用

    例:通过线程,同时下载三个图片

    1.下载图片工具类

    2.通过线程调用三张图片

    避免单继承的局限常用接口来实现多线程,还可以方便共享资源

    注:

    对比Thread和Runnable

    Thread 启动线程:子类对象.start()

    Runnable 启动线程:传入目标对象+Thread对象.start()

    使用Callable接口创建多线程

  • 相关阅读:
    .net注册iis
    hdu 1081To The Max
    hdu 1312Red and Black
    hdu 1016Prime Ring Problem
    hdu 1159Common Subsequence
    hdu 1372Knight Moves
    hdu 1686Oulipo
    hdu 1241Oil Deposits
    hdu 1171Big Event in HDU
    hdu 4006The kth great number
  • 原文地址:https://www.cnblogs.com/chengkuan/p/13294588.html
Copyright © 2011-2022 走看看