在实际开发过程中遇到的多线程情况不多,但是在生产环境中多线程是最基本的情况,java面试时也会考到,所以看看多线程的知识还是很有必要的。

Thread,Runnable,Callable,Future,FutureTask,Executors这是java常见的接口和类。

thread.run():线程具体要执行的代码,thread.join():等待该线程完成。

---------------------8/25

写过一些程序后,在来看多线程。其实多线程涉及到内存读写,cpu等底层的东西,java语言也尽量帮我们封装和抽象,使其对于程序员能够简单些。其中java中有synchronized和volatile关键字,以及后面的Excutor框架。

synchronized:给对象(或者代码块)加锁,使一个线程在访问时,其他线程等待,实现机制:jvm内置的锁

volatile:在多线程中保证线程的可见性,具体机制主要是保证内存和缓存中的数据的一致性。

问题:

1.多个用户访问同一段代码算多线程吗? 答:不一定

2.通常说的并发是不是针对多线程的?答:是

3.那怎么样控制并发?答:锁

java的并发操作中,主要在java.util.concurrent包中。

比如常见的ScheduledExecutorService,简单来说,这是一个执行定时任务的线程,可以参考这篇博文:https://blog.csdn.net/wangmx1993328/article/details/80840598,这个类适合于在分布式系统中定时发送心跳的操作。同时还有个简单的Timer和TimerTask类:https://blog.csdn.net/wangmx1993328/article/details/80785614,都是非常好的阅读材料。其用法简单一句话总结:timer.schedule(timeTask,0,60*1000)。

其中ConcurrentLinkedQueue的源码解读,这篇博文写的非常不错

-----------------8/13

数据库连接池就使用了多线程的技术,数据库连接池基本是标配了,如c3p0,dbcp等,这已经成为比较成熟的技术,我之前也用过c3p0,现在有些忘了,我需要理解一下。应该看一下源码,能看懂一点是一点。

new ComboPooledDataSource();//空参,自动到classpath目录下面加载“c3p0-config.xml”配置文件---配置文件的存储位置和名称必须是这样,且使用“默认配置”

//ComboPooledDataSource pool = new ComboPooledDataSource("demo");//加载“c3p0-config.xml”文件中定义的“demo”这个配置元素

-------8/23-------

我发现我对java多线程的认识还存在很大的误区。比如多线程的停止和程序的停止,调用一个函数,虽然看起来没有开启一个线程,其实很可能已经开启了。

开发框架比如Netty,大量使用异步回调ChannelFuture,自己实现异步回调比较苦难,但是JDK8提供了异步调用的类CompletableFuture,非常友好。

参考资料:《java并发编程的艺术》

java异步多线程 判断线程状态_java多线程和异步回调相关推荐

  1. java中什么是线程安全_Java 多线程:什么是线程安全性

    线程安全性 什么是线程安全性 <Java Concurrency In Practice>一书的作者 Brian Goetz 是这样描述"线程安全"的:"当多 ...

  2. java 多线程使用线程池_Java多线程:如何开始使用线程

    java 多线程使用线程池 什么是线程? (What is a Thread?) A thread is a lightweight process. Any process can have mul ...

  3. java 线程状态_Java线程为何没有Running状态?我猜你不知道。

    作者:国栋原文:https://my.oschina.net/goldenshaw/blog/705397 Java虚拟机层面所暴露给我们的状态,与操作系统底层的线程状态是两个不同层面的事.具体而言, ...

  4. 统计Java进程中的线程状态(jstack+linux)

    统计Java进程中的线程状态 第一步:查看Java进程ID 第二步:使用jstack命令dump线程信息,看看pid=45890进程中的线程都是什么状态 /usr/local/java/jdk1.8. ...

  5. java线程 stop()_java 多线程5: java 终止线程及中断机制 (stop()、interrupt() 、interrupted()、isInterrupted())...

    JAVA中有3种方式可以终止正在运行的线程 ①线程正常退出,即run()方法执行完毕了 ②使用Thread类中的stop()方法强行终止线程.但stop()方法已经过期了,不推荐使用 ③使用中断机制i ...

  6. java线程基础_Java多线程基础

    前言 在我们工作和学习的过程中,Java线程我们或多或少的都会用到,但是在使用的过程上并不是很顺利,会遇到各种各样的坑,这里我通过讲解Thread类中的核心方法,以求重点掌握以下关键技术点: 线程的启 ...

  7. java 线程 组成_java多线程

    一:基本知识点 1.1线程与进程区别: 1.进程是资源分配的最小单位,线程是CPU调度的最小单位 2.一个进程由一个或多个线程组成 3.进程之间相互独立,每个进程都有独立的代码和数据空间,但同一进程下 ...

  8. java线程设计模式_JAVA多线程设计模式

    漫谈UML UML 类图 类和层次结构的关系 接口与实现 聚合 访问控制 类间的关联性 顺序图 处理流程和对象间的协调 时序图 Introduction 1 Java语言的线程 Java语言的线程 何 ...

  9. java不同进程的相互唤醒_JAVA多线程之线程间的通信方式

    一,介绍 本总结我对于JAVA多线程中线程之间的通信方式的理解,主要以代码结合文字的方式来讨论线程间的通信,故摘抄了书中的一些示例代码. 二,线程间的通信方式 ①同步 这里讲的同步是指多个线程通过sy ...

最新文章

  1. 用python画漫画_Python——turtle绘制动漫形象(魔法少女小圆晓美焰,super beautiful)...
  2. 首发:李航老师的《统计学习方法》第二版的代码实现(Github标星过万!)
  3. Circular Sequence UVA - 1584
  4. UI binding render - how to check
  5. Windows Mobile logo测试介绍
  6. 基于三值图像的车牌识别测试程序发布
  7. Cron 触发器及相关内容 (第四部分)
  8. 软件部署在不同linux上,如何在Linux中安装和部署keepalived
  9. 数据库服务器修改地址,数据库服务器修改地址吗
  10. NKOJ1472 警卫安排
  11. 大数据: 城市转型发展新的驱动力
  12. 电气工程学计算机有用吗,电气工程及其自动化就业方向 有前途吗
  13. 功能测试基础之业务流程测试
  14. STM32F103 实现 简易闹钟小程序
  15. python元祖封包_Python基础——解包与封包
  16. 有所精,有所知,有所思
  17. 鸿蒙实力等级划分,从综漫开始的万界之旅
  18. %md ,%0md ,%-md ,%m.nf
  19. 判断完全立方数——cf比赛总结
  20. 如何在电脑上录制视频教学 电脑录制方法共享

热门文章

  1. 【tensorFlow】——图像数据增强、读取图像、保存图像
  2. 学习笔记(25):Python网络编程并发编程-Thread其他属性和守护线程
  3. python3循环一直到一个值结束_一步一步学Python3(小学生也适用) 第十七篇:循环语句for in循环...
  4. 第5章 Python 数字图像处理(DIP) - 图像复原与重建5 - 均匀噪声
  5. sunday java_Sunday算法:最快的字符串匹配算法
  6. deepin安装卡死在蓝色背景_求大神帮助~安装DEEPIN系统卡在蓝色背景图什么原因...
  7. python函数参数类型及顺序_python函数参数类型及其顺序
  8. all any 或 此运算符后面必须跟_好好跟大家聊聊,最全面的 Python 重点
  9. 前后端分离的思考与实践(二)
  10. oracle vm中的xp添加共享文件夹