首页 > 编程语言 >Java多线程笔记

Java多线程笔记

时间:2023-05-14 23:22:09浏览次数:34  
标签:执行 Java 对象 创建 void 笔记 线程 多线程

Java多线程

基本概念

线程 是操作系统能够调度的最小单位,他被包含再进程志宏,是进程中的实际运作单位

进程 进程是程序的基本执行实体

并发和并行

并发:在同一时刻,有多个指令在单个CPU上交替执行

并行 在同一时刻,有多个指令在多个CPU上同时执行

多线程的实现方式

继承Thread类的方式进行实现

直接创建Thread对象

实现Runnable接口的方式进行实现

1.自定义一个类实现Runnable接口

2.重写里面的run方法

3.创建自己类的对象(表示多线程要完成的任务)

4.创建一个Thread对象(创建线程对象)

利用Callable接口和Future接口方式实现

特点:可以获取到多线程的运行结果

1.创建一个类实现Callable接口

2.重写call(有返回值,表示多线程运行的结果)

3.创建实现了Callable接口的实例化对象(表示多线程要执行的任务)

4.创建实现了Future接口的实例化对象FutureTask的对象(用于管理多线程运行的结果)

5.创建一个Thread对象(创建线程对象)

常见的成员方法

static Thread currentThread() 
          返回对当前正在执行的线程对象的引用。 

 void setPriority(int newPriority) 
          更改线程的优先级。 

static void sleep(long millis) 
          在指定的毫秒数内让当前正在执行的线程休眠(暂停执行),此操作受到系统计时器和调度程序精度和准确性的影响 

 void start() 
          使该线程开始执行;Java 虚拟机调用该线程的 run 方法。 

void setName(String name) 
          改变线程名称,使之与参数 name 相同

void join() 
          等待该线程终止。 (插入线程)

static void yield() 
          暂停当前正在执行的线程对象,并执行其他线程(出让线程)

线程的生命周期

图片

线程安全

synchronize锁

同步代码块 把操作共享数据的代码锁起来

//锁是默认打开的,有一个线程进去了,锁自动关闭
//里面的代码全部执行完毕,代码出来,锁自动打开
//锁对象一定要是唯一的,不然一个对象一个锁就失去了锁的意义(可以传递当前类字节码文件的对象 eg.MyThread.class ,保证某一对象的锁的唯一性)

synchronized(锁){
	操作共享数据的代码
}

同步方法 就是把synchronized关键字加到方法上

//本质和同步代码块是一样的,就是锁住的是一个方法,但是锁的对象不能自己指定
//非静态时对象时this,静态的对象时当前类的字节码对象

权限修饰符 synchronized 返回值类型 方法名(方法参数){···}

lock锁

//相比synchronizd锁可以自己手动的上锁和手动的释放锁
//Lock是接口不能直接实例化,可以用他的实现类ReentrantLock来实例化

void lock() 
          获取锁 

void unlock() 
          释放锁。 

死锁

简单来说就是锁里套锁,在多线程执行过程中可能存在两个线程,一个线程进入了一个大锁,另一个线程进入了这个大锁中的一个小锁,此时进入大锁中的只能等待小锁解锁再进去,假如小锁中有大锁未解开的锁,此时就陷入了俩个线程一起等待,进入死锁

等待唤醒机制

标签:执行,Java,对象,创建,void,笔记,线程,多线程
From: https://www.cnblogs.com/naoziinicu/p/17399449.html

相关文章

  • Java电影订票管理系统
    电影订票系统主要是为了实现电影院的电影信息能够实时的展现上映电影信息以及对顾客能够根据上映电影进行网上购票支付的系统。一个经典的电影订票系统一般都需要提供良好的交互界面页面,但由于还没有学习前端方面的知识,所以交互仍在控制台中。从功能上来看,需要包括网民可以通过电影......
  • MySQL学习笔记:mycat2原理与实现
    mycat2官网:MyCat2(mycatone.top)参考学习视频这可能是B站唯一把数据库中间件Mycat2讲的如此深入透彻的教程!_哔哩哔哩_bilibili什么是mycat2?Mycat是开源社区在阿里Cobar基础上进行二次开发的数据库中间件,也是目前最流行的基于java语言编写的数据库中间件;是一个开源的分布式数据......
  • 01构建之法阅读笔记
    《构建之法》一书深入浅出地解释了软件构建的重要性,并详细介绍了如何构建高质量、易于维护和可扩展的软件。书中提到,软件构建有许多方面,包括编码、测试、文档和版本控制等,而这些方面都有着各自的最佳实践和技巧,需要程序员不断学习和实践。此外,本书还介绍了敏捷开发、持续集成、代......
  • C基础笔记(数组)
    数组 声明一个数组,需要指定元素的类型和元素的数量数组都是以0作为它们第一个元素的索引,即0作为第一位存储数据数组是用来存储一系列数据(相同类型的变量)语法: 数组类型 数组名称[整型常量]#include<stdio.h>intmain(){intcj[10];//数组的定义cj......
  • 老杜 JavaWeb 讲解(六) ——Servlet对象的生命周期
    (八)Servlet对象的生命周期对应视频:10-Servlet对象的生命周期8.1什么是Servlet对象生命周期?Servlet对象什么时候被创建。Servlet对象什么时候被销毁。Servlet对象创建了几个?Servlet对象的生命周期表示:一个Servlet对象从出生在最后的死亡,整个过程是怎样的。8.2Servle......
  • C#全自动多线程上位机源码 0, 纯源代码。 1, 替代传统plc搭载的触摸屏
    C#全自动多线程上位机源码0,纯源代码。1,替代传统plc搭载的触摸屏。2,工控屏幕一体机直接和plc通信。3,功能强大,多级页签。4,可以自由设定串口或以太网通信。5,主页。6,报警页。7,手动调试页。8,参数设定页。9,历史查询页。10,系统设定页。11,赠送所有控件。......
  • pwn刷题笔记
    jarvisoj_level2(ret2text)checksec检查保护机制,开启了NX。vulnerable_function函数处存在栈溢出漏洞:buf只能存放0x88个字节,但可以读入0x100个字节。system函数plt地址:0x8048320ida查看字串,“/bin/sh”地址:0x804A024构造payload#!/usr/bin/envpython3frompwnimport*io......
  • 多线程qt5 c++ 工业自动化上位机源代码 Qt5之工业应用! 一套完
    多线程qt5c++工业自动化上位机源代码Qt5之工业应用!一套完整工程,链接PLC,工业无人值守自动扫码使用,无线扫码枪SR1000的使用,使用qt5.14,用qtcreator加载工程后,编译,运行,可调试可扩展,目的是学习qt开发方式。Sqlserver存储方式,查询自由。excel方便导出,c++效率无需赘言。不懂的随时和卖......
  • Qt5 C++ 多线程工业气体标定 1)使用OPC 封装COM 2)C++调用OPC; 3
    Qt5C++多线程工业气体标定1)使用OPC封装COM2)C++调用OPC;3)使用经典界面;4)使用QT专业皮肤编程qss;5)C++链接PLC读写数据;6)赠送KEPSVR服务器;参数如下:-----------------------------1)编程语言:C++(11或以上);-----------------------------2)编程环境:QT5.14;-----------------------------......
  • java数组
    数组数组是相同类型数据的有序集合数组创建dataType[]arrayName或者dataTypearraName[];效果相同但是前者为首选例如:int[]a=newint[10];//声明+创建分配空间intb[]=newint[10];a[0]=1;//获取数组长度array.length内存分析java内存:堆:存放new的对象和......