Java学习 · 初识 多线程
多线程
1. 基础概念
a) 程序 Program
i. 静态代码,指令集,应用程序执行的蓝本
b) 进程 Process
i. 动态概念,正在运行的程序,有地址空间,操作系统任务调度
ii. 特点
- 动态性
- 并发性
- 独立性
c) 线程 Thread
i. 在进程内多条执行路径
ii. 轻量级进程
iii. 一个进程中运行多个线程,完成不同任务,称为多线程
d)
- 2. 线程的创建
a) 继承Thread + 重写run方法
i.
b) 实现Runnable接口 + 实现Run接口
i. 使用静态代理
- 创建真实角色
- 创建代理角色,Thread + 真实角色的引用
- 代理角色.start
ii. 两种区别
iii. 常用方法
iv. 另一种实现
- 通过Callable接口实现多线程
a)
b) 思路
i. 创建 Callable实现类+重写call
ii. 借助 执行调度服务 ExecutorService,获取Future对象
iii. 获取值 result.get()
iv. 停止服务 ser.shutdownNow();
v.
- 线程状态
a)
b) 停止线程
i. Void interrupt()
- 发送中断请求
- 如果被Sleep调用阻塞,抛出异常
ii. Static Boolean interrupted()
- 测试当前线程是否被中断
- 副作用:将当前线程的状态重置为false
iii. Boolean isInterupte()
- 没有副作用
iv. Static Thread currentThread()
- 返回代表当前执行线程的Thread线程
- 同步:并发,多个线程访问同一份资源,确保资源安全 -->线程安全
a) 关键字synchronized
i. 同步块 synchronized
ii. 同步方法 synchronized
- 5. 死锁:过多的同步引发
a) 解决:生产者消费者模式
i. 信号灯法
ii. 一、 wait() :等待,释放锁 sleep 不释放锁
iii. 二、notify()/notifyAll():唤醒
iv. 与 synchronized 一起使用
Java学习 · 初识 多线程的更多相关文章
- 0037 Java学习笔记-多线程-同步代码块、同步方法、同步锁
什么是同步 在上一篇0036 Java学习笔记-多线程-创建线程的三种方式示例代码中,实现Runnable创建多条线程,输出中的结果中会有错误,比如一张票卖了两次,有的票没卖的情况,因为线程对象被多条 ...
- Java学习笔记-多线程-创建线程的方式
创建线程 创建线程的方式: 继承java.lang.Thread 实现java.lang.Runnable接口 所有的线程对象都是Thead及其子类的实例 每个线程完成一定的任务,其实就是一段顺序执行 ...
- 2019/3/7 Java学习之多线程(基础)
Java学习之多线程 讲到线程,就必须要懂得进程,进程是相当于一个程序的开始到结束,而线程是依赖于进程的,没有进程,就没有线程.线程也分主线程和子线程,当在主线程开启子线程时,主线程结束,而子线程还可 ...
- java学习笔记 --- 多线程(多线程的创建方式)
1.创建多线程方式1——继承Thread类. 步骤: A:自定义类MyThread继承Thread类. B:MyThread类里面重写run()? 为什么是run()方法呢? C:创建对象 D:启 ...
- Java学习之多线程详解
一.多线程的实现 1.继承Thread类 a.子类继承Thread类具备多线程能力 b.启动线程:子类对象.start() c.不建议使用:避免OOP单继承局限性 package com. ...
- java学习之多线程
进程(Process)是计算机中的程序关于某数据集合上的一次运行活动,是系统进行资源分配和调度的基本单位,是操作系统结构的基础. 线程(Lightweight Process,LWP)是程序中一个单一 ...
- JAVA学习总结-多线程基础:
参考书籍:疯狂JAVA讲义 1.进程和线程; 进程是处于运行过程中的程序;并且具有一定的独立功能;进程是系统进行系统资源分配和调度的一个独立单位. 一般而言,进程包括以下三个特征: 独立性:进程是系统 ...
- JAVA学习笔记 -- 多线程之共享资源
在多线程程序执行过程中,可能会涉及到两个或者多个线程试图同一时候訪问同一个资源.为了防止这样的情况的发生,必须在线程使用共享资源时给资源"上锁",以阻挡其他线程的訪问. 而这样的机 ...
- 0041 Java学习笔记-多线程-线程池、ForkJoinPool、ThreadLocal
什么是线程池 创建线程,因为涉及到跟操作系统交互,比较耗费资源.如果要创建大量的线程,而每个线程的生存期又很短,这时候就应该使用线程池了,就像数据库的连接池一样,预先开启一定数量的线程,有任务了就将任 ...
随机推荐
- 【题解】洛谷P4391 [BOI2009] Radio Transmission(KMP)
洛谷P4391:https://www.luogu.org/problemnew/show/P4391 思路 对于给定的字符串 运用KMP思想 设P[x]为前x个字符前缀和后缀相同的最长长度 则对于题 ...
- iOS 8及以后版本 如何创建UIAlertView?
1. Important: UIAlertView is deprecated in iOS 8. (Note that UIAlertViewDelegate is also deprecated. ...
- MVC导航菜单高亮显示实现思路
///代码不是我写的,但是已经亲自测试过了,按照我的理解写的注释,不对的地方大家评论指出 @{ @*这个是把当前的路由值格式化并保存到currentController这个变量中,这里是格式化为Con ...
- STC12LE5620AD RAM问题
1.此款单片机内部有 sram:768B=512B(aux)+256B(Internal) 2.内部RAM解析 2. 3.内部扩展RAM 4.keil中可以选择内存类型 5. 网上摘抄的一段话: 在S ...
- mysql数据库迁移到oracle数据库后 如何删除相同的数据
mysql数据库迁移到oracle数据库后 如何删除相同的数据 首先搞清楚有多少数据是重复的 select pid from product group by pid having count(pid ...
- 使用js函数格式化xml字符串带缩进
遇到了一个做soap的API的操作,中途需要说明xml的组装模式等, 如上图,组装产生的mxl代码药格式化并展示.由于是在前端做的,所以需要将字符串将xml进行格式化并输出,找到别人写的算法稍加更改并 ...
- 用java数组模拟登录和注册功能
package com.linkage.login; import java.util.Scanner; public class user { // 存储用户名和密码 public static S ...
- ajax 与 axios区别
Ajax: Ajax 即“Asynchronous Javascript And XML”(异步 JavaScript 和 XML),是指一种创建交互式网页应用的网页开发技术. Ajax = 异步 J ...
- company.scss
.company{ @extend .layout; width:100%; h3{ display: block; margin: 20px 0; text-align: left; } .comp ...
- 全志A64 QT移植
1. 把编译工具 gcc-linaro-aarch64.tar.xz 添加到环境.bashrc 中 2. 下载 tslib-1.4.tar.gz ,libiconv-1.15.tar.gz ,qt-e ...