一,JAVA中实现多线程(一)

1,在Java中负责线程的这个功能的是Java.lang.Thread 这个类
2,可以通过创建 Thread 的实例来创建新的线程。

3,每个线程都是通过某个特定Thread对象所对应的方法run( )来完成其操作的,方法run( )称为线程体。

4,通过调用Thead类的start()方法来启动一个线程。

二,创建线程的方式一继承Thread类

操作步骤: 【1】继承Thread类

【2】重写run方法
【3】创建对象,调用start()方法启动线程

三,线程的执行

四,创建线程的方式二实现Runnable接口

操作步骤:【1】实现Runnable接口
【2】重写run方法
【3】创建对象,调用start()方法启动线程

五,JAVA中实现多线程(二)

1,继承Thread类方式的缺点:那就是如果我们的类已经从一个类继承(如小程序必须继承自 Applet 类),则无法再继承 Thread类

2,通过Runnable接口实现多线程
3,优点:可以同时实现继承。实现Runnable接口方式要通用一些。

4,(1)避免单继承
5,(2)方便共享资源 同一份资源 多个代理访问

六,线程状态

1,新生状态

– 用new关键字建立一个线程后,该线程对象就处于新生状态。

– 处于新生状态的线程有自己的内存空间,通过调用start()方法进入就绪状态。

2,就绪状态

– 处于就绪状态线程具备了运行条件,但还没分配到CPU,处于线程就绪队列,等待系统为其分
配CPU。

– 当系统选定一个等待执行的线程后,它就会从就绪状态进入执行状态,该动作称为 CPU “ 调 度”。

3,运行状态

– 在运行状态的线程执行自己的run方法中代码,直到等待某资源而阻塞戒完成任何而死亡。

– 如果在给定的时间片内没有执行结束,就会被系统给换下来回到等待执行状态。

4,阻塞状态

– 处于运行状态的线程在某些情况下,如执行了sleep(睡眠)方法,戒等待I/O设备等资源,将让
出CPU并暂时停止自己运行,进入阻塞状态。

– 在阻塞状态的线程不能进入就绪队列。只有当引起阻塞的原因消除时,如睡眠时间已到,戒等
待的I/O设备空闲下来,线程便转入就绪状态,重新到就绪队列中排队等待,被系统选中后从
原来停止的位置开始继续执行。

5,死亡状态

– 死亡状态是线程生命周期中的最后一个阶段。线程死亡的原因有三个,

一个是正常运行的线程完成了它的全部工作;

另一个是线程被强制性地终止,如通过stop方法来终止一个线程【不推荐使用】;

三是线程抛出未捕获的异常。

七,线程操作的相关方法

八,阻塞状态(sleep/yield/join方法)

1,有三种方法可以暂停Thread执行:

(1),sleep:
不会释放锁,Sleep时别的线程也不可以访问锁定对象。

(2),yield:
让出CPU的使用权,从运行态直接迚入就绪态。让CPU重新挑选哪一个线程进入运行状态。
(3),join:
当某个线程等待另一个线程执行结束后,才继续执行时,使调用该方法的线程在此之前执行完毕,也就是等待调用该方法的线程执行完毕后再往下继续执行

JAVA中实现多线程相关推荐

  1. Java中的多线程编程(超详细总结)

    文章目录 Java中的多线程编程(超详细总结) 一.线程与多线程的概念 二.线程与进程之间的关系 三.一个线程的生命周期 四.多线程的目的和意义 五.线程的实现的方式 Java中的多线程编程(超详细总 ...

  2. JAVA中的多线程(一)

    JAVA中的多线程(一) 进程:是一个正在执行中的程序 每一个进程执行都有一个执行的顺序,该顺序是一个执行路径,或者叫控制单元 线程:就是进程中的一个独立的控制单元 线程在控制着进程的执行 一个进程中 ...

  3. JAVA中的多线程(八):线程的优先级和yield方法

    JAVA中的多线程(八):线程的优先级和yield方法 优先级代表着抢资源的频率 所有线程默认优先级是5 yield()临时释放线程的执行权 1 class Demo implements Runna ...

  4. JAVA中的多线程与运动仿真(1)——用JAVA来放一场烟花

    JAVA中的多线程与运动仿真(1)--用JAVA来放一场烟花 一.实现效果的简单展示: 初步实现的动态效果为在鼠标点击之后,点击之处出现一簇小球,然后向不同方向散开变大. 利用这一效果,再在后续增加颜 ...

  5. 草根方式学习java中的多线程

    草根方式学习java中的多线程 下面有具体的代码和截图 源码点这里 多线程即在同一时间,可以做多件事情(说白了,就是齐头并进) 单线程就是按部就班 创建多线程有2种方式,分别是继承线程Thread类, ...

  6. java中实现多线程的三种方式

    java中实现多线程的三种方式 1.实现多线程的方法: 在java中实现多线程的两途径:继承Thread类,实现Runable接口(Callable) 2.继承Thread类实现多线程: ​ 继承类T ...

  7. Java中的多线程基本介绍

    在 Java 中,多线程是指同时执行两个或多个线程以最大限度地利用 CPU 的过程. Java 中的线程是一个轻量级进程,只需要较少的资源即可创建和共享进程资源. 多线程和多进程用于 Java 中的多 ...

  8. Java基础——深入理解Java中的多线程(超级详细,值得你看)

    Java中的多线程 进程(process)是程序的一次执行过程,或是正在运行的有一个程序,或是正在运行的一个程序.是一个动态的过程:有它自身的产生.存在和消亡的过程.--生命周期. 线程(thread ...

  9. Java中控制多线程顺序执行

    Java中控制多线程顺序执行 一.概述 二.普通示例 三.控制示例 3.1.设置线程优先级 3.2.使用线程类的join() 3.2.1.在主线程join() 3.2.2.在子线程join() 3.3 ...

最新文章

  1. 关于Java中的JDBC使用和数据库(SQL Server)连接之后的一些操作
  2. 机器学习(5)--化无限为有限
  3. datagrid单选多选
  4. 英伟达jetson tx1开发套件配置tensorflow
  5. 基础训练——合并电话簿
  6. 17 张程序员专属壁纸,有你喜欢的吗?
  7. linux 无线网卡连接网络连接不上去,【已解决】Ubuntu 10.04 无线网卡 无法连接
  8. python 扩展_用Python方法对Cursor进行扩展
  9. 输入一行字符,用Java分别统计出其中英文字母、空格、数字和其他字符的个数。
  10. 【HNOI2006】【BZOJ1192】鬼谷子的钱袋(水题,位运算?)
  11. 惠普HP Laser 107a 打印机驱动
  12. fasterrcnn 总结
  13. 2019(第八届)国际桥梁与隧道技术大会-会议议程
  14. 家庭宽带多运营商接入方案
  15. npm 和 cnpm 的区别
  16. AD18无法仿真问题的解决
  17. python数据分析实验报告_用Python处理实验数据
  18. 鸿蒙系统中的 WebView 加载H5页面出现net::ERR_CLEARTEXT_NOT_PERMITTED的解决方法
  19. proteus教程——74hc165
  20. 计算机的风扇参数,风扇能力大不同 这个参数来区分

热门文章

  1. 什么是序列化,怎么序列化,为什么序列化,反序列化会遇到什么问题
  2. Android 判断是否有刘海屏
  3. work-notes(8):如何制作卡片凹陷?如何制作梯形?如何制作有凹陷的盒子?如何制作透明凹陷?
  4. 删除PPT所有页面中同一个位置的图片
  5. [网络安全学习篇21]:防火墙(千峰网络安全视频笔记 21 day)
  6. 经典面试题-什么是ORM?
  7. 小程序wxParse的使用
  8. http请求报头header
  9. XTU 1102海明距离
  10. android汉明距离,C++实例之海明距离问题解析