java多线程编程(学习笔记)入门

一、多线程创建的三种方式

(1)通过继承Thread本身

(2)通过实现runnable接口

(3)通过 Callable 和 Future 创建线程

其中,前两种不能获取到编程的结果,第三种能获取到结果

二、常见的成员方法

|----------------------------------|----------------------|
| 方法名称 | 说明 |
| String getName() | 返回此线程的名称 |
| void setName(String name) | 设置线程的名字(构造方法也可以设置名字) |
| static Thread currentThread() | 获取当前线程的对象 |
| static void sleep(long time) | 让线程休眠指定的时间,单位为毫秒 |
| setPriority(int newPriority) | 设置线程的优先级 |
| final int getPriority() | 获取线程的优先级 |
| final void setDaemon(boolean on) | 设置为守护进程 |
| public static void yield() | 出让线程/礼让线程 |
| public static void join() | 插入线程/插队线程 |

构造方法不能继承

守护线程:当其他的非守护线程执行完毕之后,守护线程会陆续结束

三、线程的生命周期

四、线程安全问题

(1)同步代码块

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

格式:

//锁对象,一定要是唯一的

static Object obj = new Object();

synchronized(锁){

操作共享数据的代码

}

特点一:锁默认打开,有一个线程进去了,锁自动关闭

特点二:里面的代码全部执行完毕,线程出来,锁自动打开

(2)同步方法

格式:

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

}

特点一:同步方法是锁住方法里面所有的代码

特点二:锁对象不能自己指定

非静态:this

静态:当前类的字节码文件对象

StringBuilder 和StringBuffer

单线程用一,多线程用二

(3)lock锁

lock实现提供比使用synchronized方法和语句可以获得更广泛的锁定操作

lock提供了获得锁和释放锁的方法

void lock():获得锁

void unlock():释放锁

Lock是接口不能直接实例化,这里采用它的实现类ReentrantLock来实例化

ReentranLock的构造方法

ReentrantLock():创建一个ReentrantLock的实例

相关推荐
贫民窟的勇敢爷们4 分钟前
Spring Security OAuth2.0 技术详解:分布式系统安全认证的标准方案
java·安全·spring
无限进步_4 分钟前
【C++】红黑树完全解析:从概念到插入与平衡维护
java·c语言·开发语言·数据结构·c++·后端·算法
加勒比海带665 分钟前
人工智能前沿——「试问当前国外AI大模型哪家强?」
大数据·开发语言·图像处理·人工智能
非凡ghost5 分钟前
视频下载神器:直播回放、视频链接一键抓取,还能自动监听!
java·前端·javascript·音视频
雪度娃娃11 分钟前
Effective Modern C++——auto
开发语言·c++
m0_7406532215 分钟前
告别重复编码-Symfony自动化开发指南
jvm·数据库·python
IT当时语_青山师__JAVA技术栈20 分钟前
Java反射深度解析:运行时探查的艺术、代价与工程实践
java·后端·面试
无限进步_22 分钟前
简单聊聊 C++ 中的 unordered_map 和 unordered_set
c语言·开发语言·数据结构·c++·windows·哈希算法·散列表
摇滚侠27 分钟前
Java 项目教程《黑马商城》认识微服务 01 - 04
java·微服务·架构
智慧物业老杨28 分钟前
老旧小区团购模式下的数智化工单体系搭建与实践——基于保利项目600+工单的技术落地解析
java·人工智能·后端·科技·struts