多线程

1. 基础概念

a)     程序 Program

i.           静态代码,指令集,应用程序执行的蓝本

b)    进程 Process

i.           动态概念,正在运行的程序,有地址空间,操作系统任务调度

ii.           特点

  1. 动态性
  2. 并发性
  3. 独立性

c)     线程 Thread

i.           在进程内多条执行路径

ii.           轻量级进程

iii.           一个进程中运行多个线程,完成不同任务,称为多线程

d)   

  1. 2.   线程的创建

a)     继承Thread + 重写run方法

i.          

b)    实现Runnable接口 + 实现Run接口

i.           使用静态代理

  1. 创建真实角色
  2. 创建代理角色,Thread + 真实角色的引用
  3. 代理角色.start

ii.           两种区别

iii.           常用方法

iv.           另一种实现

  1. 通过Callable接口实现多线程

a)    

b)    思路

i.           创建 Callable实现类+重写call

ii.           借助 执行调度服务 ExecutorService,获取Future对象

iii.           获取值 result.get()

iv.           停止服务 ser.shutdownNow();

v.          

  1. 线程状态

a)    

b)    停止线程

i.           Void interrupt()

  1. 发送中断请求
  2. 如果被Sleep调用阻塞,抛出异常

ii.           Static Boolean interrupted()

  1. 测试当前线程是否被中断
  2. 副作用:将当前线程的状态重置为false

iii.           Boolean isInterupte()

  1. 没有副作用

iv.           Static Thread currentThread()

  1. 返回代表当前执行线程的Thread线程
  1. 同步:并发,多个线程访问同一份资源,确保资源安全  -->线程安全

a)     关键字synchronized

i.           同步块 synchronized

ii.           同步方法 synchronized

  1. 5.   死锁:过多的同步引发

a)     解决:生产者消费者模式

i.       信号灯法

ii.       一、 wait() :等待,释放锁   sleep 不释放锁

iii.       二、notify()/notifyAll():唤醒

iv.             与 synchronized 一起使用

Java学习 · 初识 多线程的更多相关文章

  1. 0037 Java学习笔记-多线程-同步代码块、同步方法、同步锁

    什么是同步 在上一篇0036 Java学习笔记-多线程-创建线程的三种方式示例代码中,实现Runnable创建多条线程,输出中的结果中会有错误,比如一张票卖了两次,有的票没卖的情况,因为线程对象被多条 ...

  2. Java学习笔记-多线程-创建线程的方式

    创建线程 创建线程的方式: 继承java.lang.Thread 实现java.lang.Runnable接口 所有的线程对象都是Thead及其子类的实例 每个线程完成一定的任务,其实就是一段顺序执行 ...

  3. 2019/3/7 Java学习之多线程(基础)

    Java学习之多线程 讲到线程,就必须要懂得进程,进程是相当于一个程序的开始到结束,而线程是依赖于进程的,没有进程,就没有线程.线程也分主线程和子线程,当在主线程开启子线程时,主线程结束,而子线程还可 ...

  4. java学习笔记 --- 多线程(多线程的创建方式)

    1.创建多线程方式1——继承Thread类. 步骤:  A:自定义类MyThread继承Thread类.  B:MyThread类里面重写run()? 为什么是run()方法呢? C:创建对象 D:启 ...

  5. Java学习之多线程详解

    一.多线程的实现 1.继承Thread类 ​ a.子类继承Thread类具备多线程能力 ​ b.启动线程:子类对象.start() ​ c.不建议使用:避免OOP单继承局限性 package com. ...

  6. java学习之多线程

    进程(Process)是计算机中的程序关于某数据集合上的一次运行活动,是系统进行资源分配和调度的基本单位,是操作系统结构的基础. 线程(Lightweight Process,LWP)是程序中一个单一 ...

  7. JAVA学习总结-多线程基础:

    参考书籍:疯狂JAVA讲义 1.进程和线程; 进程是处于运行过程中的程序;并且具有一定的独立功能;进程是系统进行系统资源分配和调度的一个独立单位. 一般而言,进程包括以下三个特征: 独立性:进程是系统 ...

  8. JAVA学习笔记 -- 多线程之共享资源

    在多线程程序执行过程中,可能会涉及到两个或者多个线程试图同一时候訪问同一个资源.为了防止这样的情况的发生,必须在线程使用共享资源时给资源"上锁",以阻挡其他线程的訪问. 而这样的机 ...

  9. 0041 Java学习笔记-多线程-线程池、ForkJoinPool、ThreadLocal

    什么是线程池 创建线程,因为涉及到跟操作系统交互,比较耗费资源.如果要创建大量的线程,而每个线程的生存期又很短,这时候就应该使用线程池了,就像数据库的连接池一样,预先开启一定数量的线程,有任务了就将任 ...

随机推荐

  1. Spring MVC 框架

    一.SpringMVC基础入门,创建一个HelloWorld程序 1.首先,导入SpringMVC需要的jar包. 2.添加Web.xml配置文件中关于SpringMVC的配置 <!--conf ...

  2. Oracle中case的第二种用法

    procedure P_GetProVerSingInfo_2018(varFileID in varchar2, p_cr1 out refcontent, p_cr2 out refcontent ...

  3. 关于Vue的组件的通用性问题

    在项目中,经常会有需求让我们把很多通用性的功能写成一个模板,然后根据不同的应用场景传入不同的参数来完成某种功能 但是在很多时候,其实并不是一个模板就能完成所有的功能的 这就需要分类写组件了,但是需求方 ...

  4. python学习笔记(3)---cookie & session

    一.cookie & session 1.cookie: cookie 就是由服务器发送给客户端的特殊信息,而这些信息以文本的方式存放在客户端,然后客户端每次向服务器发送请求都会带上这些特殊信 ...

  5. PHP交友网站源码、门户社交聊天网站源码,多国语言婚恋交友网站

    交友网站管理系统,是一款基于微软ASP平台开发,集成交友.婚介.商家.并与支付宝.财付通.完美整合等功能于一体的交友网站管理系统.地方交友网站,企业或个人都有能力运营地方交友门户网站,完善的会员系统. ...

  6. [Doctrine Migrations] 数据库迁移组件的深入解析三:自定义数据字段类型

    自定义type 根据官方文档,新建TinyIntType类,集成Type,并重写getName,getSqlDeclaration,convertToPHPValue,getBindingType等方 ...

  7. seleniun 爬取淘宝网

    import re from selenium import webdriver from selenium.common.exceptions import TimeoutException fro ...

  8. python学习之文件读写入门(文件读的几种方式比较)

    1.文件读写简单实例:(以w写的方式打开一个文件,以r读一个文件) # Author : xiajinqi # 文件读写的几种方式 # 文件读写 f = open("D://test.txt ...

  9. C# 面试题 (三)

    1. 抽象类的特性是什么? 抽象类不能被实力化,在抽象类上使用new操作符是错误的. 抽象类允许(但不必要)包含抽象方法和入口. 抽象类不能用scaled修饰符. 2. abstract关键字怎么用? ...

  10. 无限滚动HTML UL结构

    http://framework7.taobao.org/docs/infinite-scroll.html#.VUjA7NOqqko