上一页 1 ··· 7 8 9 10 11 12 13 14 15 ··· 26 下一页
摘要: linux 下预构建二进制文件安装 Nodejs Nodejs预购建二级制文件下载地址 安装 Nodejs 和 npm # 解压 tar xvf node-v20.15.1-linux-x64.tar.xz # 移动解压出的文件夹到 /usr/local下,并且重命名为nodejs mv ./nod 阅读全文
posted @ 2024-07-20 20:04 n1ce2cv 阅读(15) 评论(0) 推荐(0) 编辑
摘要: 在 Java 中,我们可以使用 synchronized 关键字和 CAS 来实现加锁效果。 悲观锁: 对于悲观锁来说,它总是认为每次访问共享资源时会发生冲突,所以必须对每次数据操作加上锁,以保证临界区的程序同一时间只能有一个线程在执行。 synchronized 是悲观锁,尽管随着 JDK 版本的 阅读全文
posted @ 2024-07-19 19:06 n1ce2cv 阅读(20) 评论(0) 推荐(0) 编辑
摘要: public class Test { static int i; public void test() { synchronized (this) { i++; } } } 0 aload_0 1 dup 2 astore_1 // monitorenter 指令在编译后会插入到同步代码块的开始位 阅读全文
posted @ 2024-07-19 18:15 n1ce2cv 阅读(18) 评论(0) 推荐(0) 编辑
摘要: Java 多线程的锁都是基于对象的,Java 中的每一个对象都可以作为一个锁。 类锁,其实就是 Class 对象的锁。 Class 对象是一种特殊的 Java 对象,代表了程序中的类和接口。Java 中的每个类型(包括类、接口、数组以及基础类型)在 JVM 中都有一个唯一的 Class 对象与之对应 阅读全文
posted @ 2024-07-19 15:41 n1ce2cv 阅读(50) 评论(0) 推荐(0) 编辑
摘要: 在 Java 中,关键字 synchronized 可以保证在同一个时刻,只有一个线程可以执行某个方法或者某个代码块(主要是对方法或者代码块中存在共享数据的操作),同时我们还应该注意到 synchronized 的另外一个重要的作用,synchronized 可保证一个线程的变化(主要是共享数据的变 阅读全文
posted @ 2024-07-19 14:46 n1ce2cv 阅读(26) 评论(0) 推荐(0) 编辑
摘要: volatile 可以保证可见性,但不保证原子性: 当写一个 volatile 变量时,JMM 会把该线程在本地内存中的变量强制刷新到主内存中去; 这个写操作会导致其他线程中的 volatile 变量缓存无效。 volatile 会禁止指令重排 重排序需要遵守的规则: 重排序不会对存在数据依赖关系的 阅读全文
posted @ 2024-07-19 12:41 n1ce2cv 阅读(6) 评论(0) 推荐(0) 编辑
摘要: Java 内存模型 Java 内存模型(Java Memory Model,JMM)定义了 Java 程序中的变量、线程如何和主存以及工作内存进行交互的规则。它主要涉及到多线程环境下的共享变量可见性、指令重排等问题,是理解并发编程中的关键概念。 两种并发模型: 如何通信 如何同步 消息传递并发模型 阅读全文
posted @ 2024-07-18 23:08 n1ce2cv 阅读(13) 评论(0) 推荐(0) 编辑
摘要: 线程组 每个 Thread 必然存在于一个 ThreadGroup 中,Thread 不能独立于 ThreadGroup 存在。执行main()方法的线程名字是 main,如果在 new Thread 时没有显式指定,那么默认将父线程的线程组设置为自己的线程组。 public static void 阅读全文
posted @ 2024-07-18 20:49 n1ce2cv 阅读(7) 评论(0) 推荐(0) 编辑
摘要: OS 中的进程/线程状态 操作系统中的进程/线程状态转换图: Java 线程的六个状态: // Thread.State 源码 public enum State { NEW, RUNNABLE, BLOCKED, WAITING, TIMED_WAITING, TERMINATED; } NEW 阅读全文
posted @ 2024-07-18 20:11 n1ce2cv 阅读(71) 评论(0) 推荐(0) 编辑
摘要: 无返回值的 Runnable public interface Runnable { public abstract void run(); } public static void main(String[] args) throws ExecutionException, Interrupted 阅读全文
posted @ 2024-07-18 19:34 n1ce2cv 阅读(11) 评论(0) 推荐(0) 编辑
上一页 1 ··· 7 8 9 10 11 12 13 14 15 ··· 26 下一页