java中多线程介绍
1.创建线程的2中方式
a)Extends Thread; 编写run方法
b)Implements Runnable:重写run方法
2.线程的5种状态(创建、就绪、执行、阻塞、死亡)
注意:阻塞状态和运行状态是不能直接达到的,需要回归到就绪状态。
a)T.start(); 是线程进入就绪状态,Runnable状态
b)等待cpu的调度,调度后才能进入Running运行状态
c)调用sleep/yield/会进入阻塞状态,直到被唤醒
i.Thread.sleep();调度线程(当前线程)休眠进入阻塞状态,时间到后自动就绪
可以制定时间,交出cpu的执行权,能让比自己低(等、高)的优先级线程得到执行。
ii.Yield();交出cpu的控制权,但是cpu后期调度谁,不好说,可能还是自己
不能制定时间,只能让和自己同优先级的线程得到执行
iii.T.join();表示等到t线程被执行完后才会继续执行调度线程
iv.Wait()只有wait会释放对象锁,直到调用notify/notifyAll或者超时
notify/notifyAll调用时,并不会立即释放对象锁,而是等到synchronizati块执行完毕。
d)死亡状态(正常死亡好)
i.Systerm.exit(1): 退出JVM
3.线程的优先级(setPriroty)
a)Min=1; norm = 5; max =10
b)设置优先级只是说明被cpu调度的概率大
4.线程同步和死锁
a)每个对象都有锁
b)获取对象锁的方法 synchronized (xxx.class)
i.如果拿不到锁,则进入到所锁对象的锁池,等待该对象的锁通知锁池中的对象
C) 死锁
1.出现死锁原因
a)对象方法的执行需要多把锁,锁之间又相互引用
b)资源被共享
----------------------------------------------------------------------------------------------------------------------------------------
1. 为什么Thread.Stop()和Thread.Suspend()过时不用?
Stop不安全:是暴力终止线程的方法,当线程执行到sync块的一部分时,调用stop则会立即终止线程,造成数据不连贯一致。提倡用标记来终止run方法或者interrupt
suspend是容易发生死锁:suspend不会释放资源锁,如果其他线程想在拿到被锁定的资源锁后恢复该挂起线程,则会造成死锁。推荐用wait代替。
java中多线程介绍相关推荐
- Java中多线程的性能比较
Java中有多种用于多线程的技术. 可以通过同步关键字,锁或原子变量来并行化Java中的一段代码. 这篇文章将比较使用synced关键字ReentrantLock,getAndIncrement()以 ...
- Java中多线程访问冲突的解决方式
Java中多线程访问冲突的解决方式 当时用多线程访问同一个资源时,非常容易出现线程安全的问题,例如当多个线程同时对一个数据进行修改时,会导致某些线程对数据的修改丢失.因此需要采用同步机制来解决这种问题 ...
- java runnable 异常_详解Java中多线程异常捕获Runnable的实现
详解Java中多线程异常捕获Runnable的实现 1.背景: Java 多线程异常不向主线程抛,自己处理,外部捕获不了异常.所以要实现主线程对子线程异常的捕获. 2.工具: 实现Runnable接口 ...
- (面经总结)一篇文章带你整理面试过程中关于Java 中多线程的创建方式的最全整理
文章目录 一.Java线程的创建方式 二.继承Thread类 三.实现 Runnable 接口 四.通过ExecutorService和`Callable`实现有返回值的线程 五.基于线程池 六.面试 ...
- java中多线程重要吗_Java基础知识_多线程必要知识点
一.使用多线程遇到的问题 1.1 线程安全问题 在前面的文章中,多线程主要是为了提高我们应用程序的使用率.但同时,这会给我们带来很多安全问题. 如果我们在单线程中以顺序(串行->独占)的方式执 ...
- Java中多线程启动,为什么调用的是start方法,而不是run方法?
前言 大年初二,大家新年快乐,我又开始码字了.写这篇文章,源于在家和基友交流的时候,基友问到了,我猛然发现还真是这么回事,多线程启动调用的都是start,那么为什么没人掉用run呢?于是打开我的ide ...
- java中多线程编程案例_Java中多线程编程实战的实现线程_Java编程_Java程序员_课课家...
java编程语言使多线程如此简单有效,以致于某些程序员说它实际上是自然的.尽管在 Java 中使用线程比在其他语言中要容易得多,仍然有一些概念需要掌握.要记住的一件重要的事情是 main() 函数也是 ...
- Java中多线程并发处理方式
synchronized关键字主要解决多线程共享数据同步问题. ThreadLocal使用场合主要解决多线程中数据因并发产生不一致问题. ThreadLocal和Synchonized都用于解决多线程 ...
- JAVA中多线程基础知识
程序(软件):数据和指令的集合.软件架构:B/S C/S 软件分类:系统软件,应用软件. 进程:正在运行的程序,会在内存中分配空间. 线程:进程中的多条路径. 多线程是指有多条线程并发的执行. 并 ...
- Java中多线程、多线程的实现方式、同步代码块的方式
多线程 进程 线程 概念 目前的程序是单线程 线程的组成部分 代码实现多线程的方式 第一种方式 第二种方式 第三种方式 -- 线程池 第四种方式:Callable 线程状态 线程同步 临界资源 原子操 ...
最新文章
- C++文件读写 打开方式等比较全
- [转载] 后台进程符的使用 [文摘]
- JavaScript比较数组的方法
- 【c++】15.订阅消息后转化为proto消息,再序列化,最后通过tcp发送出去
- 程序员应该如何自我驱动,迅速获得成长?
- react打包服务器文件,react项目搭建及打包发布
- KeyBlaze for mac(专业打字练习软件)激活版
- python二维数据读取对齐_[Python ] Python 多维数组转换的维度对齐问题
- STM32用于PWM占空比测量
- 移动端html字体大小自适应,【css】移动端响应式布局与响应式字体大小
- PyTorch学习笔记(10)——上采样和PixelShuffle
- 学习自旋电子学的笔记04:模拟自旋波在弯曲磁畴壁中传播
- 创业型公司,你要不要去?
- 改进维纳滤波的实现——光学稀疏孔径成像系统图像恢复算法研究 陈灏
- 华为Mate40Pro和华为Mate40Pro+ 哪个好
- WIN7常见问题与分析
- 分糖问题和插板法:10个相同糖果分给3个小朋友,有几种分法?
- VsCode创建第一个vue项目
- sti()和cli()
- Hi3516芯片简介,Hi3516EV300处理器参数介绍
热门文章
- mmdetection(2): DeformableConvNets(DCN)
- win2003终端服务器超出了最大允许连接数解决方案
- 卷一 内核源代码分析 第二章 异常 2.2.1 cortex A9多核处理器的中断控制器GIC---2.2.2 Mt6577的中断体系 图书试读版-请勿转载
- rainyday.js 下雨效果插件使用方法
- cmd里面import不是内部外部命令
- 解决dns没问题,能上qq不能上网的问题
- mysql解题器_mysql触发器,答题记录表同步教学跟踪(用户列表)
- 2.2 反相放大器、高输入电阻反相放大器、反相高压放大器
- baddy:核心函数入口
- Ceph分布式存储详解