java 多线程

  • *线程的状态:New、Runnable、Blocked、Waiting、Timed waiting、Terminated

new Thread()——> New、 start()——> Runnable、 等待资源——>Blocked、wait()——> waiting 等

  • 锁:ReentrantLock, 条件对象:Condition
  • *synchronized

每个Object对象都有一个内部锁,synchronized关键字实际使用的就是内部锁,直接使用的wait()方法实际使用的是对象内部锁的条件。

wait()——notifyAll——notify 对应 Condition.await()——Condition.signalAll()——Condition.signal()

synchronized(obj){……} 获取的是obj的内部锁

  • *Volatile

  • 修饰变量可见性,即主内存和工作内存同步

  • 阻止相关字节码重排序

  • new ThreadLocal

  • tryLock() 申请一个锁,成功返回true,否则立即返回false。可以传入超时参数
  • ReentrantReadWriteLock 读写锁,多线程读,少线程写很有用。拆分成读锁 readLock()和写锁writeLock()使用。
  • 阻塞队列 通过队列的方式分成生产线程和消费线程
  • java.util.concurrent 包中包含线程安全的集合,例如ConcurrentHashMap、ConcurrentLinkedQueue等
  • *Callable and Future

Callable 区别于Runnable, 其可以返回计算结果Future对象,也可以抛出异常。

可以用 FutureTask包装Callable接口的对象,即

Callable<integer> myComputation = ...;
FutureTask<integer> task = new FutureTask<integer>(myComputation);
Thread t = new Thread(task);
t.start();
....;
Integer result = task.get();</integer></integer></integer>
  • *线程池

Executor类工厂方法 :

newCachedThreadPool() 必要时创建新线程,空闲线程保留60秒 newFixedThreadPool() 该池包含固定数量的线程,空闲线程会一直保留 newSingleThreadExecutor() 只有一个线程的池,顺序执行每一个提交的任务 newScheduledThreadPool 用于预定执行而构建的固定线程池,代替java.util.Timer newSingleThreadScheduledExecutor() 用于预定执行而构建的单线程池

前三个返回实现了ExecutorService接口的ThreadPoolExecutor对象,使用submit(Runnable)或submit(Callable)提交任务

后两个返回实现ScheduledExecutorService接口的对象,可以定时或周期执行任务。

  • 控制任务组 ExecutorCompletionService
  • *Fork-Join框架

Original: https://www.cnblogs.com/lostO/p/16744416.html
Author: 迷路的圆
Title: java 多线程

原创文章受到原创版权保护。转载请注明出处:https://www.johngo689.com/620296/

转载文章受原作者版权保护。转载请注明原作者出处!

(0)

大家都在看

  • 小程序开屏广告demo

    相信在座的各位都有见过大部分的应用打开的时候都会有个全屏的广告。 但是小程序的会比较少一点,因为小程序打开加载的时候已经需要消耗不少时间了,所以基本都不会去做这个,影响用户的体验。…

    Java 2023年6月16日
    0116
  • SimpleDateFormat 转换 ISO 8601日期格式 2020-12-33T14:32:25.072+08:00

    目的 为了校验ISO 8601格式的日期,2020-12-33T14:32:25.072+08:00 格式转换 SimpleDateFormat final String ISO_…

    Java 2023年6月8日
    089
  • Servlet 4

    Servlet 4.0规约简介 Servlet 4.0 规约是JCP组织定义的Web规约,JSR编号369。 1.1 什么是Servlet? Servlet 是基于Java技术的W…

    Java 2023年6月15日
    079
  • 异常

    异常 异常分为两大类,运行时异常和编译时异常 运行时异常,编译器不要求强制处置的异常。一般是指编程时的逻辑错误,是程序员应该避免出现的异常。java.lang.RuntimeExc…

    Java 2023年6月5日
    0109
  • Java连载154-IO总结(一)

    一、类图 基本上IO可以分为字节流和字符流 二、字符大小 一般来说一个字母占用一个字节,一个汉字占用两个字节。具体还要看字符编码,比如说在 UTF-8 编码下,一个英文字母(不分大…

    Java 2023年6月13日
    085
  • java动态代理实现与原理详细分析

    关于Java中的动态代理,我们首先需要了解的是一种常用的设计模式–代理模式,而对于代理,根据创建代理类的时间点,又可以分为静态代理和动态代理。 一、代理模式 代理模式是…

    Java 2023年5月29日
    085
  • Activiti7 多实例子流程

    顾名思义,子流程是一个包含其他活动、网关、事件等的活动,这些活动本身形成了一个流程,该流程是更大流程的一部分。 使用子流程确实有一些限制: 一个子流程只能有一个none类型的启动事…

    Java 2023年6月7日
    0103
  • Java8之流Stream

    java 8 API添加了一个新的抽象称为流Stream,可以让你以一种声明的方式处理数据。 Stream 使用一种类似用 SQL 语句从数据库查询数据的直观方式来提供一种对 Ja…

    Java 2023年5月29日
    086
  • 基于 Apache Hudi 极致查询优化的探索实践

    摘要:本文主要介绍 Presto 如何更好的利用 Hudi 的数据布局、索引信息来加速点查性能。 湖仓一体(LakeHouse)是一种新的开放式架构,它结合了数据湖和数据仓库的最佳…

    Java 2023年6月15日
    0103
  • 内网穿透工具之FRP

    内网穿透工具之FRP 背景: 实现两个不同的内网(有网络)的穿透控制,假如我们就在湖南局域网,而目标在上海,为了实现msf的后门在目标上执行,而找到我们的内网主机上线。 拓扑图: …

    Java 2023年6月6日
    096
  • Git 11 不同项目设置不同提交人

    前面介绍了可以给 Git 设置全局提交人,这样当前电脑所有项目提交人都会变成设置的值。 但实际开发中有时候需要给 不同项目设置不同提交人。 比如工作的项目是一个提交人,自己维护的开…

    Java 2023年6月6日
    079
  • 解决Unable to locate package的问题

    Ubantu上E: Unable to locate package xxx的解决 修改sources.list可用的镜像 &#x4FEE;&#x6539; apt…

    Java 2023年6月15日
    0103
  • 利用privoxy劫持http网站数据,插入广告,获取用户名,密码

    看了几篇privoxy的文章,感觉讲的都不详细,在此整理一遍。 注:本文下面的内容仅讨论思路,作为技术交流之用,请勿用作非法途径. Privoxy是一款带过滤功能的代理服务器,针对…

    Java 2023年6月16日
    078
  • (Java初学篇)IDEA项目新建流程和软件配置优化以及怎么彻底删除项目

    相信很多小伙伴们在初学 Java 时都会出现这样的情况,就是在网上一顿搜索加捣鼓终于把 JDK 和IDEA 这两款软件安装配置好,但是发现面对这个陌生的软件此时却无从下手,那么接下…

    Java 2023年6月15日
    0136
  • Java编程题(1):n个数里出现次数大于等于n/2的数

    题目描述:输入n个整数,输出出现次数大于等于数组长度一半的数。 输入描述:每个测试输入包含 n个空格分割的n个整数,n不超过100,其中有一个整数出现次数大于等于n/2。 输出描述…

    Java 2023年6月6日
    0107
  • 【Redis】quicklist

    Redis List 在Redis3.2版之前,Redis使用压缩列表和双向链表作为List的底层实现。当元素个数比较少并且元素长度比较小时,Redis使用压缩列表实现,否则Red…

    Java 2023年6月8日
    092
亲爱的 Coder【最近整理,可免费获取】👉 最新必读书单  | 👏 面试题下载  | 🌎 免费的AI知识星球