并发
wzEminem
这个作者很懒,什么都没留下…
展开
-
Socket 编程详解
套接字使用TCP提供了两台计算机之间的通信机制。 客户端程序创建一个套接字,并尝试连接服务器的套接字。当连接建立时,服务器会创建一个 Socket 对象。客户端和服务器现在可以通过对 Socket 对象的写入和读取来进行通信。java.net.Socket 类代表一个套接字,并且 java.net.ServerSocket 类为服务器程序提供了一种来监听客户端,并与他们建立连接的机制。以下步骤在两...原创 2019-07-02 12:41:21 · 258 阅读 · 0 评论 -
Java 并发:volatile 关键字解析
在 Java 并发编程中,要想使并发程序能够正确地执行,必须要保证三条原则,即:原子性、可见性和有序性。只要有一条原则没有被保证,就有可能会导致程序运行不正确。volatile关键字 被用来保证可见性,即保证共享变量的内存可见性以解决缓存一致性问题。一旦一个共享变量被 volatile关键字 修饰,那么就具备了两层语义:内存可见性和禁止进行指令重排序。在多线程环境下,volatile关键字 主要用...原创 2019-07-02 12:42:37 · 180 阅读 · 0 评论 -
Java 并发:Lock 框架详解
一. synchronized 的局限性 与 Lock 的优点 如果一个代码块被synchronized关键字修饰,当一个线程获取了对应的锁,并执行该代码块时,其他线程便只能一直等待直至占有锁的线程释放锁。事实上,占有锁的线程释放锁一般会是以下三种情况之一: 占有锁的线程执行完了该代码块,然后释放对锁的占有; 占有锁线程执行发生异常,此时JVM会让线程自动释放锁; 占有锁的线程进...原创 2019-07-02 12:43:33 · 167 阅读 · 0 评论 -
Java 并发:Thread 类深度解析
Java 中 Thread类 的各种操作与线程的生命周期密不可分,了解线程的生命周期有助于对Thread类中的各方法的理解。一般来说,线程从最初的创建到最终的消亡,要经历创建、就绪、运行、阻塞 和 消亡 五个状态。在线程的生命周期中,上下文切换通过存储和恢复CPU状态使得其能够从中断点恢复执行。结合 线程生命周期。特别地,在介绍会导致线程进入Waiting状态(包括Timed Waiting状态)...原创 2019-07-02 12:44:21 · 151 阅读 · 0 评论 -
单例模式解析
一. 单例模式概述 单例模式(Singleton),是一种常用的设计模式。在应用这个模式时,单例对象的类必须保证只有一个实例存在。许多时候,整个系统只需要拥有一个的全局对象,这样有利于我们协调系统整体的行为。 比如在某个服务器程序中,该服务器的配置信息存放在一个文件中,这些配置数据由一个单例对象统一读取,然后服务进程中的其他对象再通过这个单例对象获取这些配置信息,显然,这种方式简化了在复杂环...原创 2019-07-02 12:45:26 · 100 阅读 · 0 评论 -
Java 并发:内置锁 Synchronized
一. 线程安全问题 在单线程中不会出现线程安全问题,而在多线程编程中,有可能会出现同时访问同一个 共享、可变资源 的情况,这种资源可以是:一个变量、一个对象、一个文件等。特别注意以下两点,所以,当多个线程同时访问这种资源的时候,就会存在一个问题:由于每个线程执行的过程是不可控的,所以需要采用同步机制来协同对对象可变状态的访问。 共享: 意味着该资源可以由多个线程同时访问; 可变: 意...原创 2019-07-02 12:46:25 · 112 阅读 · 0 评论 -
Java 并发:线程间通信与协作
一. wait/notify (synchronized)机制:线程间通过共享数据来实现通信,即多个线程主动地读取一个共享数据,通过同步互斥访问机制保证线程的安全性。等待/通知机制主要由Object类中的以下三个方法保证,这三个方法必须在同步代码中执行, 并且使用同步锁对象来调用 1、wait()、notify() 和 notifyAll():上述三个方法均非Thread类中所声明的...原创 2019-07-03 12:06:13 · 118 阅读 · 0 评论 -
并发编程——线程池
并发:当有多个线程进行操作时,假设只有一个cpu,他不能运行同时运行多个线程,只能将cpu运行时间分成若干段,然后将每段时间分配给线程,当一个线程占用cpu时间的时候,其他线程处于挂机状态。 并行:在某一个时间点内,有多个进程同时进行 线程池: future接口: get获取计算结果 可取消任务(任务完成后无法取消) FutureTask实现类:适配器模式 Future...原创 2019-07-03 12:06:31 · 220 阅读 · 0 评论 -
Java并发编程面试
synchronized(非公平锁)-重量级锁------偏向锁,轻量级锁、自旋锁 1) synchronized方法:在一个对象的方法前加synchronized,使其具有锁,一个线程对其进行调用,只有此线程完成调用后,其他线程才能进行操作。 1)当一个线程正在访问一个对象的 synchronized 方法,那么其他线程不能访问该对象的其他 synchronized 方法。这个原因很...原创 2019-07-03 12:06:45 · 101 阅读 · 0 评论