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中多线程介绍相关推荐

  1. Java中多线程的性能比较

    Java中有多种用于多线程的技术. 可以通过同步关键字,锁或原子变量来并行化Java中的一段代码. 这篇文章将比较使用synced关键字ReentrantLock,getAndIncrement()以 ...

  2. Java中多线程访问冲突的解决方式

    Java中多线程访问冲突的解决方式 当时用多线程访问同一个资源时,非常容易出现线程安全的问题,例如当多个线程同时对一个数据进行修改时,会导致某些线程对数据的修改丢失.因此需要采用同步机制来解决这种问题 ...

  3. java runnable 异常_详解Java中多线程异常捕获Runnable的实现

    详解Java中多线程异常捕获Runnable的实现 1.背景: Java 多线程异常不向主线程抛,自己处理,外部捕获不了异常.所以要实现主线程对子线程异常的捕获. 2.工具: 实现Runnable接口 ...

  4. (面经总结)一篇文章带你整理面试过程中关于Java 中多线程的创建方式的最全整理

    文章目录 一.Java线程的创建方式 二.继承Thread类 三.实现 Runnable 接口 四.通过ExecutorService和`Callable`实现有返回值的线程 五.基于线程池 六.面试 ...

  5. java中多线程重要吗_Java基础知识_多线程必要知识点

    一.使用多线程遇到的问题 1.1  线程安全问题 在前面的文章中,多线程主要是为了提高我们应用程序的使用率.但同时,这会给我们带来很多安全问题. 如果我们在单线程中以顺序(串行->独占)的方式执 ...

  6. Java中多线程启动,为什么调用的是start方法,而不是run方法?

    前言 大年初二,大家新年快乐,我又开始码字了.写这篇文章,源于在家和基友交流的时候,基友问到了,我猛然发现还真是这么回事,多线程启动调用的都是start,那么为什么没人掉用run呢?于是打开我的ide ...

  7. java中多线程编程案例_Java中多线程编程实战的实现线程_Java编程_Java程序员_课课家...

    java编程语言使多线程如此简单有效,以致于某些程序员说它实际上是自然的.尽管在 Java 中使用线程比在其他语言中要容易得多,仍然有一些概念需要掌握.要记住的一件重要的事情是 main() 函数也是 ...

  8. Java中多线程并发处理方式

    synchronized关键字主要解决多线程共享数据同步问题. ThreadLocal使用场合主要解决多线程中数据因并发产生不一致问题. ThreadLocal和Synchonized都用于解决多线程 ...

  9. JAVA中多线程基础知识

    程序(软件):数据和指令的集合.软件架构:B/S  C/S  软件分类:系统软件,应用软件. 进程:正在运行的程序,会在内存中分配空间. 线程:进程中的多条路径. 多线程是指有多条线程并发的执行. 并 ...

  10. Java中多线程、多线程的实现方式、同步代码块的方式

    多线程 进程 线程 概念 目前的程序是单线程 线程的组成部分 代码实现多线程的方式 第一种方式 第二种方式 第三种方式 -- 线程池 第四种方式:Callable 线程状态 线程同步 临界资源 原子操 ...

最新文章

  1. C++文件读写 打开方式等比较全
  2. [转载] 后台进程符的使用 [文摘]
  3. JavaScript比较数组的方法
  4. 【c++】15.订阅消息后转化为proto消息,再序列化,最后通过tcp发送出去
  5. 程序员应该如何自我驱动,迅速获得成长?
  6. react打包服务器文件,react项目搭建及打包发布
  7. KeyBlaze for mac(专业打字练习软件)激活版
  8. python二维数据读取对齐_[Python ] Python 多维数组转换的维度对齐问题
  9. STM32用于PWM占空比测量
  10. 移动端html字体大小自适应,【css】移动端响应式布局与响应式字体大小
  11. PyTorch学习笔记(10)——上采样和PixelShuffle
  12. 学习自旋电子学的笔记04:模拟自旋波在弯曲磁畴壁中传播
  13. 创业型公司,你要不要去?
  14. 改进维纳滤波的实现——光学稀疏孔径成像系统图像恢复算法研究 陈灏
  15. 华为Mate40Pro和华为Mate40Pro+ 哪个好
  16. WIN7常见问题与分析
  17. 分糖问题和插板法:10个相同糖果分给3个小朋友,有几种分法?
  18. VsCode创建第一个vue项目
  19. sti()和cli()
  20. Hi3516芯片简介,Hi3516EV300处理器参数介绍

热门文章

  1. mmdetection(2): DeformableConvNets(DCN)
  2. win2003终端服务器超出了最大允许连接数解决方案
  3. 卷一 内核源代码分析 第二章 异常 2.2.1 cortex A9多核处理器的中断控制器GIC---2.2.2 Mt6577的中断体系 图书试读版-请勿转载
  4. rainyday.js 下雨效果插件使用方法
  5. cmd里面import不是内部外部命令
  6. 解决dns没问题,能上qq不能上网的问题
  7. mysql解题器_mysql触发器,答题记录表同步教学跟踪(用户列表)
  8. 2.2 反相放大器、高输入电阻反相放大器、反相高压放大器
  9. baddy:核心函数入口
  10. Ceph分布式存储详解