多线程学习总结

本文深入探讨多线程的实现方式,包括Thread、Runnable接口及线程池的应用,并讲解线程间的数据共享、同步机制,如synchronized关键字、ReentrantLock等,以及线程间的通信方法,如Condition、Semaphore等。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

多线程:

创建多线程;

	Thread
		自己new Thread()并调用start方法。
	Runnable
		将执行过程和线程对象分离,以便得到清晰的设计结构,和复用runnbale对象。
	线程池
		不用创建和管理线程。往里面丢入Runnbale或Callable即可。Callable还可以异步拿到处理后的结果。

线程共享数据

	ThreadLocal:线程内共享数据。
	锁:线程间共享数据,这时需要同步,否则会出现错误数据或脏数据。

线程间同步

	锁
		synchronized
			可以把任何对象拿来当锁用,比如:类的字节码对象、this、任何类型的Object对象。
			它只是线程之间的简单互斥,不管线程要对资源做什么操作。
			不能交叉加锁和释放锁,例如:获取节点 A 的锁,然后再获取节点 B 的锁,然后释放 A 并获取 C,然后释放 B 并获取 D,依此类推
		ReentrantLock
			可以完全代替synchronized,只是使用上多了一个释放锁的动作要做。
			而且更强大:
				1.可以设置锁倾向于将访问权授予等待时间最长的线程,但总体吞吐量很慢。
				2.可以递归上锁(即重入),但有极限,且要成对释放锁。
		ReentrantReadWriteLock
			又比ReentrantLock更强大
				1.读-写锁允许对共享数据进行更高级别的并发访问
				2.可以将锁进一步细分为读写锁。
				3.写锁同ReentrantLock一样可以重入,但读锁不行。

线程间通信

	wait()和notify()
		被用做锁的Object(即任何对象)对象的wait()和notify()方法可实现多线程间,简单的是与否的通信。
	Condition
		比wait、notify更强大 
			1.可从一把锁上延伸出多个条件,让多线程间更细粒度的使用资源。即即使获取了锁权限也可以根据条件来相互间有礼貌的阻塞。
	Semaphore信号灯
		控制同一时间可以有几个线程访问资源。
		单个信号量时可以实现互斥锁的功能,神奇的是可以由一个线程获得“锁”,再由另一个线程释放“锁”。
	CyclicBarrier
		一个同步辅助类,它允许一组线程互相等待,直到到达某个公共屏障点。可以重用
	CountDownLatch
		在完成一组正在其他线程中执行的操作之前,它允许一个或多个线程一直等待。 
	Exchanger
		两个线程交换数据。
	Thread
		实例方法join(),调用者会等待此线程实例执行完。
		静态方法yield().当前线程主动退出cpu调度,等待下一次被调度。
		静态方法sleep().当前线程睡眠一段时间(不释放锁),再等待下一次被调度。
资源下载链接为: https://pan.quark.cn/s/22ca96b7bd39 在当今的软件开发领域,自动化构建与发布是提升开发效率和项目质量的关键环节。Jenkins Pipeline作为一种强大的自动化工具,能够有效助力Java项目的快速构建、测试及部署。本文将详细介绍如何利用Jenkins Pipeline实现Java项目的自动化构建与发布。 Jenkins Pipeline简介 Jenkins Pipeline是运行在Jenkins上的一套工作流框架,它将原本分散在单个或多个节点上独立运行的任务串联起来,实现复杂流程的编排与可视化。它是Jenkins 2.X的核心特性之一,推动了Jenkins从持续集成(CI)向持续交付(CD)及DevOps的转变。 创建Pipeline项目 要使用Jenkins Pipeline自动化构建发布Java项目,首先需要创建Pipeline项目。具体步骤如下: 登录Jenkins,点击“新建项”,选择“Pipeline”。 输入项目名称和描述,点击“确定”。 在Pipeline脚本中定义项目字典、发版脚本和预发布脚本。 编写Pipeline脚本 Pipeline脚本是Jenkins Pipeline的核心,用于定义自动化构建和发布的流程。以下是一个简单的Pipeline脚本示例: 在上述脚本中,定义了四个阶段:Checkout、Build、Push package和Deploy/Rollback。每个阶段都可以根据实际需求进行配置和调整。 通过Jenkins Pipeline自动化构建发布Java项目,可以显著提升开发效率和项目质量。借助Pipeline,我们能够轻松实现自动化构建、测试和部署,从而提高项目的整体质量和可靠性。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值