基础篇之《线程》

@author :kern

————————————————————————————————————————————————————————————————

一:进程:是一个正在执行的程序。每一个进程都有一个执行顺序,该顺序是一个执行路径,或者叫一个执行单元。

二:线程:是进程中的一个独立的控制单元,线程在控制着进程的执行。一个进程中至少有一个线程。

三:多线程:

3.1 继承Thread类创建线程

方法:①创建一个类继承Thread类。

②复写Thread类的run方法。

③创建子类对象,调用Thread类的start方法,该方法作用是开始线程,调用run方法。

3.2线程的运行状态:

① 创建

② 运行

③ 冻结 有两种情况,一是sleep(时间),时间一到就唤醒了;二是wait(),要被notify()唤醒。

④ 消亡 有两种情况,一是stop(),二是run()方法运行结束后,线程会自动消亡。

⑤ 阻塞 又叫临时状态,即有执行资格但是没有执行权。

3.3 实现Runnable接口创建线程

方法:①创建类然后实现Runnable接口。

②复写Runnable接口的run()方法。

③通过Thread类创建线程对象,

④创建Runnable接口的子类对象,然后将其对象作为实际参数传递给Thread类的构造函数。

⑤调用Thread类的start()方法,开启线程调用run()方法。

3.4 继承和实现的区别:

实现Runnable接口避免了单继承的局限性。Runnable实现的同时还可以继承。

3.5 线程的安全问题:这里就说说线程中我们最常见的问题---执行资格和执行权的问题。

a。问题原因:当多条语句在操作同一个线程共享数据时,一个线程对多条语句只执行了一部分,还没有执行完,

另一个线程参与进来执行,导致共享数据的错误。

b。解决方案:对多条线程作为共享数据语句,只能让一个线程都执行完了。在执行的过程中,其他线程不可以参与执行。

同步代码块:synchronized(对象)

{

需要被同步的代码;

}

注:对象可以为任意对象 如:Object obj=new Object(); 对象如同锁,持有锁的可以再同步中执行,

没有持有锁的即使获取cpu的执行权也进不去。

3.5 同步的两种表现形式:

a。同步代码块;见3.4

b。同步函数:直接将synchronized作为修饰符修饰函数。

3.6 锁;a。同步函数用的是哪一个锁呢?

函数需要被对象调用,那么函数都有一个所属对象,就是this。所以同步函数使用的锁是this。

b。如果同步函数被静态修饰,那么使用的锁是什么呢?

静态方法中不可以定义this。静态进内存时,内存中没有本类对象,但是一定有该类对应的字节码文件。

类名。class,该对象的类型是class。所以静态同步方法,使用的锁是该方法所在类的字节码文件,类名。class;

四:线程间通信 :就是多个线程操作同一个资源,单单是操作的动作不同;

4.1 wait(),notify(),notifyAll(),用来操作线程,为什么定义在Object类中?

a。这些方法存在与同步中。

b。使用这些方法时必须要标识所属的同步的锁;

c。锁可以使任意对象,所以任意对象调用的方法一定定义在Object类中。

☆ 也就是说,等待和唤醒必须是同一个锁,而锁可以是任意对象所以可以被任意对象调用的方法定义在Object类中。

4.2 wait(),sleep()有什么区别?

wait()释放资源,释放锁。

sleep()释放资源,不释放锁。

4.3 JDK1.5的特性:提供了多线程升级解决方案。

a。将同步synchronized替换成Lock操作。

b。将Object中的wait,notify,notifyAll替换成condition对象。该对象可以通过Lock锁进行获取。

4.4 停止线程:

a。如何停止线程呢?

·原理:只有一种,run()方法结束。开启多线程运行,运行代码往往是循环结构,只要控制循环语句,就可以让run()方法结束。

·特殊情况:当线程处于停滞状态时,就无法读取标记结束循环语句,那么线程就不会结束,这时需要对冻结进行清除。

强制让线程恢复到运行状态,这样就可以操作标记结束线程。于是Thread类中提供了方法interrupt().

4.5 守护线程:void setDaemon(boolean on) 该方法必须在启动线程前使用。

4.6 join() 等待线程终止:即当A线程运行到B线程的join方法时,那么A线程就会等待,等待B线程全部运行结束再运行。

4.7 优先级;指线程抢到CUP的执行权的频率。默认优先级为5,最高为10;设置优先级setPriority()方法。

-----------------------------------------------------------------------------------------------------

我是一个菜菜菜菜鸟,想飞却怎么也飞不高,寻寻觅觅,寻寻觅觅·····

自学的过程中总结出来的一些关于函数的知识点,我就当一次复习了。

有需要的可以参考一下,如有漏掉的或者不完善的谢谢大家指正。

java线程通信概念_java基础线程总结(线程概念、线程创建方式、线程间通信、线程重要方法)...相关推荐

  1. java 54张扑克牌_Java基础高级综合练习题扑克牌的创建

    最近学了很多的知识,脑容量小,记不清,还是得做做练习! 今天就做了一个扑克牌的练习 首先呢..这个逻辑一定要非常清楚,我们要想做出一副扑克牌,必定要弄清楚每一张牌和整的一副牌 首先分析 一张扑克 一张 ...

  2. java同步锁售票_Java基础学习笔记: 多线程,线程池,同步锁(Lock,synchronized )(Thread类,ExecutorService ,Future类)(卖火车票案例)...

    学习多线程之前,我们先要了解几个关于多线程有关的概念. 进程:进程指正在运行的程序.确切的来说,当一个程序进入内存运行,即变成一个进程,进程是处于运行过程中的程序,并且具有一定独立功能. 线程:线程是 ...

  3. java package报错_Java基础知识总结 - 超详细篇(上)

    1,JDK:Java Development Kit,java的开发和运行环境,java的开发工具和jre. 2,JRE:Java Runtime Environment,java程序的运行环境,ja ...

  4. java io流 教程_Java基础教程:IO流与文件基础

    Java:IO流与文件基础 说明: 本章内容将会持续更新,大家可以关注一下并给我提供建议,谢谢啦. 走进流 什么是流 流:指的是从源到目的地的字节的有序序列. 在Java中,可以从其中读取一个字节序列 ...

  5. java string hash变量_java基础(六)-----String性质深入解析

    本文将讲解String的几个性质. 一.String的不可变性 对于初学者来说,很容易误认为String对象是可以改变的,特别是+链接时,对象似乎真的改变了.然而,String对象一经创建就不可以修改 ...

  6. java 有序数组 频率_java基础最全面总结_1

    一. 面向对象: { 1.面向对象的思想 :基于面向过程的编程思想 特点:符合我们思想的 将复杂的简单化 将我们从执行者变为指挥者 开发:不断创建对象使用对象指挥对象做事情 设计:就是管理和维护对象之 ...

  7. java 新手入门电子书_Java基础入门指导(适合所有初学者).pdf

    来源:小天使笔记本防盗软件官网 () 第 章 Java 语言概述与面向对象思想 . Java 语言的发展 . . Java 语言的产生 . .2 Java 语言的发展 .2 Java 语言的特点 2 ...

  8. Java入参关键字_Java基础17-成员变量、return关键字和多参方法

    1.成员变量 在类中声明的变量为成员变量 //Dog类 class Dog{ String name;//成员变量 } public class Test1{ public static void m ...

  9. java socket资源释放_java基础--socket

    (1) 一.网络:将不同区域的计算机连接到一起 局域网 城域网 互联网 二.地址:IP地址 确定网络上 一个绝对地址 |位置 --->房子的地址 三.端口号: 区分计算机软件的 -->房子 ...

最新文章

  1. The Innovation | 中科院青促会主办精品英文期刊视频简介,定位IF 20+国际顶刊
  2. python使用fpdf生成结账发票pdf文件
  3. Nhibernate 对view 查询的几种方法
  4. Vue中使用LayUI没有效果
  5. es6与java的相似度_计算字符串的相似度-两种解法
  6. c++类对象的创建方式
  7. c语言如何将一个二维数组全为零_从零开始如何用python处理数据
  8. 2013=726 整合,优化,利用自身资源。 让自己的时间更有意义,最大化利用
  9. Origin画甘特图-II
  10. rsync 同步文件
  11. m4a怎么转换mp3格式?
  12. Android H5视频全屏,自适应视频
  13. 阿里资深架构师推荐:浅谈异地多活及阿里云容灾经验分享
  14. 杂项:Unity3D
  15. 操作系统:操作系统内核是什么?
  16. 西安市版权申请代理公司怎么选,哪些类型作品受版权保护?
  17. matlab方程求解的实验报告,用matlab对微分方程求解实验报告.doc
  18. Redis——大Key问题
  19. 家谱(特殊的层级人物关系)数据结构与自动排版算法的一种实现
  20. halfstone 原理_躺在操场看天

热门文章

  1. Windows.Web.Http.HttpClient.GetStringAsync 总是返回相同的结果
  2. 动态规划(一)简单例子
  3. Saltstack grains组件
  4. 安装php时,configure: error: xml2-config not found. Please check your libxml2 installation
  5. 如何根据用户权限屏蔽或显示SAP的订单中的成本显示
  6. 三部门发布18个新职业:含碳排放管理员、调饮师等
  7. 百度工程师控制公司服务器“挖矿”:4个月赚10万 判刑3年
  8. Windows10系统Python语言利用Pywin32模块模拟鼠标点击
  9. 阅片机器人性能增8倍,帮电网大省钱:英特尔加速AI推理细节
  10. 如何在CSDN博客中编辑公式?