多线程
2019-04-20 08:55:37来源:博客园 阅读 ()
一、并发与并行
1.并行:指两个或多个事件在同一时刻发生(同时发生)。
2.并发:指两个或多个事件在同一时间段内发生。
二、线程与进程
1. 进程:是指一个内存中运行的应用程序,每个进程都有一个独立的内存空间,一个应用程序可以同时运行多个进程;进程也是程序的一次执行过程,是系统运行程序的基本单位;系统运行一个程序即是一个进程从创建、运行到消亡的过程。
2. 线程:进程内部的一个独立执行单元;一个进程可以同时并发的运行多个线程,可以理解为一个进程便相当于一个单 CPU 操作系统,而线程便是这个系统中运行的多个任务。
3.进程与线程的区别
进程:有独立的内存空间,进程中的数据存放空间(堆空间和栈空间)是独立的,至少有一个线程。
线程:堆空间是共享的,栈空间是独立的,线程消耗的资源比进程小的多。
三、创建线程两种方式
方式一、编写一个类继承Thread类
方式二、实现Runnable接口
四、线程安全
如果有多个线程在同时运行,而这些线程可能会同时运行这段代码。程序每次运行结果和单线程运行的结果是一样的,而且其他的变量的值也和预期的是一样的,就是线程安全的。
五、线程安全问题的产生(就是访问共享资源产生的!!)
线程安全问题都是由全局变量及静态变量引起的。若每个线程中对全局变量、静态变量只有读操作,而无写操作,一般来说,这个全局变量是线程安全的;若有多个线程同时执行写操作,一般都需要考虑线程同步,否则的话就可能影响线程安全。
六、解决方式
基本上所有的并发模式在解决线程安全问题的时候,都是采用序列化访问共享资源的方案(即同步)。这意味着在给定的时刻只允许一个任务访问共享资源。通常是通过锁机制来实现的。
七、锁机制实现方式
方式一、Synchronized 关键字
用法
一、修饰方法
Synchronized修饰一个方法很简单,就是在方法的前面加synchronized,synchronized修饰方法和修饰一个代码块类似,只是作用范围不一样,修饰代码块是大括号括起来的范围,而修饰方法范围是整个函数。
public synchronized void method(){ //todo }
注意:
同步锁是谁?
Ø 对于非static方法,同步锁就是this。
Ø 对于static方法,我们使用当前方法所在类的字节码对象(类名.class)。
不能加synchronized关键字的方法:
1.接口方法。
2.构造方法,但可以使用synchronized代码块来进行同步。
synchronized关键字不能继承
二、修饰一个代码块
指定当前对象为锁
原文链接:https://www.cnblogs.com/fxw777/p/10740864.html
如有疑问请与原作者联系
标签:
版权申明:本站文章部分自网络,如有侵权,请联系:west999com@outlook.com
特别注意:本站所有转载文章言论不代表本站观点,本站所提供的摄影照片,插画,设计作品,如需使用,请与原作者联系,版权归原作者所有
- 最详细的java多线程教程来了 2020-06-08
- 系统化学习多线程(一) 2020-06-08
- 多线程:生产者消费者(管程法、信号灯法) 2020-06-01
- 如何合理地估算线程池大小? 2020-05-31
- 那些面试官必问的JAVA多线程和并发面试题及回答 2020-05-28
IDC资讯: 主机资讯 注册资讯 托管资讯 vps资讯 网站建设
网站运营: 建站经验 策划盈利 搜索优化 网站推广 免费资源
网络编程: Asp.Net编程 Asp编程 Php编程 Xml编程 Access Mssql Mysql 其它
服务器技术: Web服务器 Ftp服务器 Mail服务器 Dns服务器 安全防护
软件技巧: 其它软件 Word Excel Powerpoint Ghost Vista QQ空间 QQ FlashGet 迅雷
网页制作: FrontPages Dreamweaver Javascript css photoshop fireworks Flash