博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Java多线程
阅读量:4958 次
发布时间:2019-06-12

本文共 952 字,大约阅读时间需要 3 分钟。

Java内存模型(jmm)

线程通信

消息传递

重排序

顺序一致性

Happens-Before

As-If-Serial

一、创建线程的方式

1.继承Thread类,重写该类的run()方法。

2.实现Runnable接口,并重写该接口的run()方法,该run()方法同样是线程执行体,创建Runnable实现类的实例,并以此实例作为Thread类的target来创建Thread对象,该Thread对象才是真正的线程对象。接口

3.使用Callable和Future接口创建线程。具体是创建Callable接口的实现类,并实现clall()方法。并使用FutureTask类来包装Callable实现类的对象,且以此FutureTask对象作为Thread对象的target来创建线程。有返回值和异常。JUC包

 二、线程的生命周期及五种基本状态

  2.1 线程生命周期:新建(new)、就绪(start/yield等)、运行(CPU run)、阻塞(sleep/join等)、死亡(stop/加flag)。

 2.2 Thread类和Object的方法

sleep暂停/yield礼让属于类方法;join插队属于对象方法。

  2.3 守护线程

    用户线程和守护线程(Daemon)。jvm的退出不用等待守护线程执行完成。例:垃圾回收线程。应用场景:jvm退出时,线程能够自动退出。

    设置守护线程:t.setDaemon(true)  验证守护线程:t.isDaemon.

  2.4 Hook(钩子)线程 

    jvm退出的时候,钩子线程就会被启动执行。

   Runtime.getRuntime().addShutdownHook(new CleanWorkThread());

  2.5 常用方法

  isAlive()、setName()、getName()、currentThread()类方法。

三、高并发

 3.1 并发:同一个对象多个线程同时操作。抢占资源

 3.2 线程同步(线程安全):队列与锁 Synchronized

 锁机制:锁住对象或Class对象。

 3.3 Synchronized方法

 

转载于:https://www.cnblogs.com/wenxiangchen/p/10955879.html

你可能感兴趣的文章
配置文件struts2Struts2配置文件模块化包含(include)与action总结
查看>>
对象主题设计模式读书笔记-----观察者模式
查看>>
文件接收网络对讲机C#服务器 Android客户端(二) C#服务器代码分析
查看>>
会话_课后回顾和相关案例
查看>>
Linux 系统/etc/profile 内配置 系统脚本命令
查看>>
七夕许愿
查看>>
SpringMVC中使用Interceptor拦截器
查看>>
Spring Cloud与微服务构建:微服务简介
查看>>
自动化过程遇到的问题
查看>>
Mybatis 使用PageHelper封装通用Dao分页方法
查看>>
Matlab神经网络
查看>>
【转】浅谈Java中的hashcode方法
查看>>
Git branch 分支与合并分支
查看>>
8. input限制手机输入
查看>>
状态码
查看>>
前端跨域之jsonp跨域
查看>>
自己用h5写的转盘。写贴上来吧。
查看>>
Python开发基础 day12 模块2
查看>>
Socket编程 (异步通讯,解决Tcp粘包) - Part3
查看>>
OSI七层协议
查看>>