java多线程总结(1)

一、线程与进程的概念

进程就是计算机中的程序关于某数据集合的一次运行活动,是系统进行资源分配和调度的单位。我都理解就是一个程序的运行,可以打开自己的任务管理器查看运行的进程。

线程就是轻量级的进程,是程序执行的最小单位。

一个进程包含若干个线程。使用多线程而不是多进程去进行并发程序设计是因为线程之间切换和调度的成本远远小于进程。

二、学习并发的五个概念

1.同步(Synchronous)与异步(Asynchronous)

 同步和异步通常都是形容一次方法的调用。同步方法调用一旦开始,调用者必须等到方法调用返回后才能开始后续行为;异步方法调用更像一个消息传递,方法调用后立即返回,调用者可以继续执行后续的行为。

举个栗子买个衣服,自己去商城挑货,下单款然后带回家,这就是同步调用,而异步调用就是你通过淘宝下单付款,之后的任务就与你无关,你只需要签收就是。

2.并发(Concurrency)与并行(Parallelism)

并行是多个任务同时执行,比如多个cpu或多台电脑同时执行某个任务;而并发是多个任务连续执行,任务之间不断切换。我们常指的多线程就是并发设计。

3.临界区

临界区用来表示一种公共资源或者说是一种共享数据,可以被多个线程使用,但每次只能有一个线程能使用它,一但该资源被占用,其他线程想使用这个资源就必须等待。如我们需要对一个对象的操作进行加锁,那么加锁的这段代码就是临界区,而加锁的对象称为临界资源。

public class criticalRegion extends Thread{
	private static Object object = new Object();
	
	public void run(){
		synchronized (object) {
			System.out.println("临界区调用");
		}
	}
}

 

4.阻塞(Blocking)和非阻塞(Non-bolcing)

 

阻塞和非阻塞通常用来形容多线程间的相互影响。比如一个线程占领了临界区资源,那么其他线程要想使用这个资源就必须等待,等待会造成线程的挂起,这种情况就是阻塞;非阻塞与之相反,它强调没有一个线程可以妨碍其它线程,所有线程都会尝试不断前行。锁和无锁就是阻塞和非诸塞操作,后文会详细阐述。

5.死锁(Deadlock)、饥饿和活锁

死锁每个线程都在等待其他线程释放需要操作的资源,很经典的一个死锁案例就是哲学家就餐问题,后文会详细分析,发生死锁过后我们会发现程序一直在运行但不会停止,但cpu占用为0,程序无任何输出。我们可以通过jstack查看,打开cmd用jps查看java进程id,再用jstack输出该线程的信息。

饥饿表示一个或多个线程由于某种原因无法获取它所需要的资源,导致一直无法运行,不如线程优先级太低,高优先级的线程不断抢占它所需要的资源。饥饿在未来一段时间内可能解决。

活锁表示多个线程都在谦让资源而没有一个线程拿到资源正常执行。

三、多线程的特性

JMM(java内存模型)很多关键技术就是围绕多线程的原子性、可见性和有序性展开的。

1.原子性(Atomicity)

原子性指一个操作不可中断。即使是多个线程在一起执行,一个操作一旦开始就不会被其他线程干扰。

2.可见性(Visibility)

一个线程修改了某一个共享变量之后,其他线程能否立即知道这个修改。

3.有序性(Ordering)

一个程序的执行不会发生乱序,程序给我们的感觉是根据代码的执行从前往后,依次执行。但在并发中,程序可能会发生乱序,这与指令重排有关。

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

最后推荐几本学习多线程的书籍

1.实战java高并发程序设计

本书主要讲解Java的并行程序设计基础、思路、方法和实战,本篇文章就是从中总结的。

 

2.Java并发编程实战

这里写图片描述

对Java方方面面的理论知识体系都掌握得是非常清楚和透彻的,本书更多的是关于概念的讲解。

 

java多线程编程核心技术

本书关于线程安全、synchronized、Reentrant、Timer等等都用详细的代码进行了讲解,而且每个大知识点下的多个小知识点都会详细讲解到,非常有实践价值。

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

城市运行管理的重要性与挑战 城市运行体系是以人为本的服务和经济发展体系,涉及决策、管理和执行三个层次。当前城市运行管理面临城市化快速发展、资源环境制约和社会矛盾突出等挑战。信息技术的发展为城市运行管理提供了重要手段,城市信息化经历了数字化、智能化到智慧化的发展过程。我国城市信息化虽取得进展,但仍处于初级阶段,存在缺乏整体规划、资源浪费和协作效率不高等问题。 智慧城市综合运行管理解决方案 智慧城市运行管理中心(SCOC)是支撑城市运行综合管理的神经中枢,旨在掌控城市运行综合体征,促进服务型政府转型。该中心通过全面整合运行资源,服务城市未来发展,提升城市运行水平和突发事件处置效率。中心纵向提升综合职能,横向贯通专业分工,包括综合管理平台、专业管理平台和业务操作平台,覆盖城市交通、公共安全、生态环境等多个领域。 智慧城市综合运行管理平台的结构与功能 智慧城市综合运行管理平台包括决策支持系统、处置系统、基础设施和监测系统。平台通过综合展现系统、综合应急指挥系统、综合运行业务联动系统等,实现城市运行的综合监测和管理。物联网数据采集系统利用网络通讯技术,实现城市物联网设备的高效运行。平台还包含云计算业务支撑系统、城市基础数据库、视频图像云平台等,以支持城市运行管理的各个方面。 智慧城市综合运行管理解决方案的优势 该解决方案具有三个核心优势:首先,它提供了完整的智慧城市视角,不仅仅是指挥中心或数据中心,而是智慧城市的实际载体。其次,它建立了完整的城市运行联动体系,打通业务部门壁垒,形成有机融合的业务联动平台,提升业务处理效率和服务水平。最后,方案凝聚了多年智慧城市建设咨询经验,为城市运行管理提供了成熟的解决方案。 项目实施建议 智慧城市运行管理中心的建设思路和项目实施建议是方案的重要组成部分,旨在指导城市如何有效实施智慧城市运行管理解决方案,以应对城市运行管理的挑战,提升城市管理的智能化和效率。通过这些建议,城市能够更好地规划和实施智慧城市项目,实现可持续发展。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值