一.概述

进程:正在执行的应用程序

线程:进程的执行单元,执行路径

单线程:一个应用程序只有一条执行路径

多线程:一个应用程序有多条执行路径

二.两种实现方式, 下面为第一种方式: 继承Thread类.

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

步骤:

a.自定义类继承Thread类

b.重写run()方法

为什么重写run()?

因为不是类中所有代码都要被线程执行, 为了区分哪些代码需要被执行, java提供了Thread类中的run()方法用来包含那些被线程执行的代码

c.创建自定义类的对象

d.启动线程对象

用run()还是用start()?

区别:

run()仅仅是封装被线程执行的方法, 直接调用时属于普通方法;

start()首先启动了线程, 然后再由jvm去调用该线程的run()方法.

2.getName();setName()获取和设置线程名称

3.线程的两种调度模型:

分时调度模型: 所有线程轮流使用cpu使用权限, 平均分配每个线程占用cpu的时间.

抢占式调度模型: 优先让优先级高的线程使用cpu, 如果线程的优先级相同, 则随机选择一个. 优先级高的线程会获得cpu相对较多的时间片(也就是执行权).

java使用的是抢占式调度模型.

如何设置和获取线程优先级?

getPriority();

setPriority(int priority);

设置线程优先级1-10: setPriority()

max  10

min  1

默认  5

4.线程API

sleep(int 毫秒): 线程休眠

join(): 线程加入, 该线程先执行完, 其他线程才可以执行

yield(): 线程礼让(可以让多个线程更和谐, 但保证不了轮流一次)

setDaemon(boolean on): 后台线程(将该线程标记为守护线程或用户线程例如张飞和关羽守护刘备, 当正在运行的线程都是守护线程时, jvm退出. 该方法必须在启动线程前调用即在执行start()方法前执行setDaemon(true)方法)

stop(): 中断线程(中断过于暴力, 线程不安全, 不建议使用)

interrupt(): 中断线程(把线程状态终止, 并抛出一个InterruptedException)

如果线程在调用Object类的wait(), wait(long), 或wait(long, int )方法, 或者该类的join(), jion(long), jion(long, int), sleep(long)或sleep(long, int)方法过程中受阻时, 则其中断状态将被清除, 收到一个InterruptedException.

详细查看jdk的API文档查Thread.

5.线程生命周期

新建

就绪

运行

阻塞: sleep()和wait()操作将线程阻塞,sleep()和notify()唤醒线程

死亡

java线程如何继承,java多线程(一)之继承Thread类相关推荐

  1. java 线程面试题_JAVA多线程面试题(一)

    1.进程和线程的区别 一个进程是一个独立(self contained)的运行环境,它可以被看作一个程序或者一个应用.而线程是在进程中执行的一个任务.Java运行环境是一个包含了不同的类和程序的单一进 ...

  2. java线程代码实现_Java 多线程代码实现讲解

    作为一个完全面向对象的语言,Java提供了类 java.lang.Thread 来方便多线程编程,这个类提供了大量的方法来方便我们控制自己的各个线程.那么如何提供给 Java 我们要线程执行的代码呢? ...

  3. Java多线程(2)--Thread类继承和Runnable接口创建线程

    Java语言的JVM允许程序运行多个线程,它通过java.lang.Thread类来体现. Thread类的特性 每个线程都是通过某个特定Thread对象的run()方法来完成操作的,经常把run() ...

  4. java 线程 free_Java进阶05 多线程

    多线程 多线程(multiple thread)是计算机实现多任务并行处理的一种方式. 在单线程情况下,计算机中存在一个控制权,并按照顺序依次执行指令.单线程好像是一个只有一个队长指挥的小队,整个小队 ...

  5. java 线程_理解java多线程

    树枝头玩魔法班卓琴弦乐器的生物与发光的蝴蝶,数字艺术风格,插画绘画creature with java多线程 1.实现Runnable接口相比于继承Thread类: (1)适合多个相同的程序代码的线程 ...

  6. java线程怎么用_Java多线程基本使用

    一.概念 1.进程 1.1进程:是一个正在进行中的程序,每一个进程执行都有一个执行顺序,该顺序是一个执行路径,或者叫一个控制单元. 1.2线程:就是进程中一个独立的控制单元,线程在控制着进程的执行,一 ...

  7. java线程集合点_Java多线程学习笔记(三) 甚欢篇

    使人有乍交之欢,不若使其无久处之厌 <小窗幽记>很多时候,我们需要的都不是再多一个线程,我们需要的线程是许多个,我们需要让他们配合.同时我们还有一个愿望就是复用线程,就是将线程当做一个工人 ...

  8. java线程池 锁_java多线程——锁

    这是多线程系列第四篇,其他请关注以下: 如果你看过前面几篇关于线程的文字,会对线程的实现原理了然于胸,有了理论的支持会对实践有更好的指导,那么本篇会偏重于线程的实践,对线程的几种应用做个简要的介绍. ...

  9. java线程下载文件_Java多线程下载文件实例详解

    本文实例为大家分享了Java多线程下载文件的具体代码,供大家参考,具体内容如下 import java.io.File; import java.io.InputStream; import java ...

  10. java+线程安全的hash,多线程下HashMap安全问题-ConcurrentHashMap解析

    Java1.5 引入了 java.util.concurrent 包,其中 Collection 类的实现允许在运行过程中修改集合对象.实际上, Java 的集合框架是[迭代器设计模式]的一个很好的实 ...

最新文章

  1. XenApp_XenDesktop_7.6实战篇之八:申请及导入许可证
  2. 工作10年,创业5年后,关于人生,我的5点思考
  3. mysql联合查询数量不一致_Mybatis关联查询,查询出的记录数量与数据库直接查询不一致,如何解决?...
  4. RSA的密钥把JAVA格式转换成C#的格式
  5. java怎么获取文本里的值_怎么获取到text中的文本,或者title中的值
  6. 深入理解Java虚拟机——第十二章——Java内存模型与线程
  7. hdu 6035:Colorful Tree (2017 多校第一场 1003) 【树形dp】
  8. php js鼠标滚动刷新,利用php和js实现页面数据刷新
  9. C++--第2课 - C++中的引用
  10. 容器技术Docker K8s 42 Serverless Kubernetes(ASK)详解-ASK应用管理
  11. 程序员的炫酷动态科幻桌面壁纸
  12. Johnson算法实现流水作业最优调度
  13. Spring Data JPA实战视频教程
  14. win10计算机被网络设备发现,图文解决win10系统网络发现已关闭计算机和设备不见的方法...
  15. 圣水观音湖规划--------------三维虚拟展示系统
  16. vue项目——商品详情页面图片放大镜效果实现(完成)
  17. DW1000学习之路(三)--------DW1000的中断处理问题
  18. python中小括号和中括号的区别_Python3中小括号()、中括号[]、花括号{}的区别详解...
  19. MacM1 安装python库文件
  20. “大白兔”迎来60岁生日 各类衍生品受青睐

热门文章

  1. 2 如何设置窗口title_如何正确的知晓生僻字发音?无需字典查询,2步手机设置轻松搞定...
  2. zplane函数怎么用m文件调用_matlab中cla用法
  3. java正式测试数据隔离,开发环境要不要和测试环境隔离?
  4. 计算机应用的问答题,计算机应用技术问答题(一)
  5. redis设置密码和其它服务器连接
  6. 文件处理命令,目录处理命令,链接命令
  7. php 模拟表单提交-get-post
  8. Docker入门 三 用服务来扩展和负载均衡你的应用
  9. 小白爬虫第一弹之抓取妹子图【更新版】
  10. Objective-C控制语句