Gallon's Note


  • 首页

  • 标签

  • 分类

  • 归档

  • 搜索

Lock and AQS

发表于 2019-10-10 | 分类于 并发

JUC包

JUC包目录。

title

其中包含了两个子包:atomic以及lock,另外在concurrent下的阻塞队列以及executors,这些类主要是依靠volatile以及CAS实现的。

整体结构如图:

title

Lock简介

Lock是一个接口。

与synchronized相比,Lock拥有了锁获取和释放的可操作性,可中断的获取锁以及超时获取锁等多种synchronized关键字所不具备的同步特性。

阅读全文 »

单例模式

发表于 2019-10-10 | 分类于 设计模式

一开始,我们写的单例模式是这样的。

1
2
3
4
5
6
7
8
9
public class Singleton {
private static Singleton instance = null;
public static Singleton getInstance(){
if(instance==null){
instance = new Singleton();
}
return instance;
}
}

但是,这种方式有一个问题,就是无法解决多线程问题。

阅读全文 »

volatile关键字

发表于 2019-10-09 | 分类于 并发

Java 内存模型

JMM定义了内存中各个共享变量访问的规则。

共享变量包括包括实例字段 静态字段和构成数组的元素,即所有线程都可以访问到的,不包括局部变量和方法参数,这是线程私有的。

title

JMM规定了所有共享变量都存储在主内存,每条线程还有自己的工作内存,工作内存除了存储线程私有的局部变量以及方法参数等,还有该线程中需要用到的主内存中的共享变量的拷贝。

阅读全文 »

synchronized关键字

发表于 2019-10-09 | 分类于 并发

使用

锁定的是对象

1
2
3
4
5
6
7
8
9
10
11
public class T {
private Object o=new Object();
private int count=10;
public void m() {
synchronized(o) {
count--;
System.out.println(Thread.currentThread().getName()+"count="+count);
}
}

}
阅读全文 »

操作系统同步互斥

发表于 2019-10-08 | 分类于 OS

TSL指令

类似于java的CAS。

Test and set lock.这是一个原子操作,他的读写操作是不分开的。

阅读全文 »

操作系统进程

发表于 2019-10-07 | 分类于 OS

进程

进程是资源分配的基本单位,他是程序运行时的一个实例。
程序运行时,系统会创建一个进程,并分配相关的资源。

程序是静态的,进程是动态的。一个程序可以对应多个进程,一个进程可以包括多个程序。

进程=程序+数据+状态信息。

阅读全文 »

操作系统概述

发表于 2019-10-07 | 分类于 OS

什么是操作系统

操作系统主要进行应用程序管理,资源管理,外设管理等工作。

在操作系统中,将CPU抽象为进程,将内存抽象为地址空间,将磁盘抽象为文件。
title

OS=shell+kernel.shell就是GUI或者是命令行。Kernel是操作系统的核心。

阅读全文 »

IO线程模型

发表于 2019-09-30 | 分类于 IO

阻塞I/O

title

  • 每一条连接都需要建立一个独立的线程来处理,机器耗费线程资源。
  • 当没有数据读写时,线程还会阻塞。
阅读全文 »

I/O模型

发表于 2019-09-29 | 分类于 IO

Socket与ServerSocket

网络通信需要一对socket,即通信的两端各有一个socket,两个socket之间形成一个管道,进行数据流的通信。
title
ServerSocket
ServerSocket监听服务器端的一个端口,当一个客户端发送来连接时,ServerSocket来处理连接,成功后返回一个常规的Socket对象,用来与客户端socket进行数据传输。

同步 异步 阻塞 非阻塞

同步与异步主要是从消息通知机制角度来说的。
当一个同步调用发出后,调用者要一直等待返回消息(结果)后,才能进行后续的执行;当一个异步过程调用发出后,调用者不能立刻得到返回消息(结果),实际处理这个调用的部件在完成后,通过状态、通知和回调来通知调用者。异步是调用完成后由别人来通知他。

阅读全文 »

Java线程

发表于 2019-09-29 | 分类于 并发

并发作用

将多核CPU的计算能力发挥到极致,性能得到提升。

面对复杂业务模型,并行程序会比串行程序更适应业务需求,而并发编程更能吻合这种业务拆分。

阅读全文 »
1…345
SKJin

SKJin

49 日志
12 分类
16 标签
RSS
GitHub E-Mail
© 2020 SKJin
由 Hexo 强力驱动
|
主题 — NexT.Gemini v5.1.4