Linux-Start-Fail-1

Linux 启动失败或密码错误 Grub 解决

我个人就遇到过在更改 linux 的挂载文件 /etc/fstab 后启动失败,遇到这种情况我们只需要在启动的时候进入紧急模式将改错文件更改回来即可。在该模式中比较常用的也有直接更改该操作系统改地 root 密码。

以下案例以 CentOS 为例,其他版本的 Linux 操作系统大相径庭。

JAVA-Thread-Base-8

Java 线程基础 8

1 锁的优化及注意事项

1.1 有助于提高锁性能的几点建议

1 减少锁持有时间

对于使用锁进行并发控制的应用程序来说,如果单个线程特有锁的时间过长,会导致锁的竞争更加激烈,会影响系统的性能.在程序中需要尽可能减少线程对锁的持有时间,如下面代码:

JAVA-Thread-Base-7

Java 线程基础 7

1 保障线程安全的设计技术

从面向对象设计的角度出发介绍几种保障线程安全的设计技术, 这些技术可以使得我们在不必借助锁的情况下保障线程安全,避免锁可能导致的问题及开销.

JAVA-Thread-Base-6

Java 线程基础 6

1 线程管理

1.1 线程组

类似于在计算机中使用文件夹管理文件,也可以使用线程组来管理线程. 在线程组中定义一组相似(相关)的线程,在线程组中也可以定义子线程组

Thread 类有几个构造方法允许在创建线程时指定线程组,如果在创建线程时没有指定线程组则该线程就属于父线程所在的线程组. JVM 在创建 main 线程时会为它指定一个线程组,因此每个 Java 线程都有一个线程组与之关联, 可以调用线程的 getThreadGroup()方法返回线程组.

线程组开始是出于安全的考虑设计用来 区分不同的 Applet,然而ThreadGroup 并未实现这一目标,在新开发的系统中,已经不常用线程组, 现在一般会将一组相关的线程存入一个数组或一个集合中,如果仅仅是用来区分线程时,可以使用线程名称来区分, 多数情况下,可以忽略线程组

JAVA-Thread-Base-5

Java 线程基础 5

1Lock 显示锁

在 JDK5 中 增 加 了 Lock 锁 接 口 , 有 ReentrantLock 实 现类,ReentrantLock 锁称为可重入锁, 它功能比 synchronized 多.

JAVA-Thread-Base-4

Java 线程基础 4

1 线程间的通信

1.1 等待/通知机制

1.1.1 什么是等待通知机制

在单线程编程中,要执行的操作需要满足一定的条件才能执行,可以把这个操作放在 if 语句块中.

在多线程编程中,可能 A 线程的条件没有满足只是暂时的, 稍后其他的线程 B 可能会更新条件使得 A 线程的条件得到满足. 可以将 A 线程暂停,直到它的条件得到满足后再将 A 线程唤醒.它的伪代码:

atomics{ //原子操作
    while( 条件不成立 ){
        等待
    }
    当前线程被唤醒条件满足后,继续执行下面的操作
}

JAVA-Thread-Base-3

Java 线程基础 3

1 线程同步

1.1 线程同步机制简介

线程同步机制是一套用于协调线程之间的数据访问的机制.该机制可以保障线程安全.

Java 平台提供的线程同步机制包括: 锁, volatile 关键字, final 关键字,static 关键字,以及相关的 API,如 Object.wait()/Object.notify()等

JAVA-Thread-Base-2

Java 线程基础 2

1 线程安全问题

非线程安全主要是指多个线程对同一个对象的实例变量进行操作时,会出现值被更改,值不同步的情况.
线程安全问题表现为三个方面: 原子性,可见性和有序性

JAVA-Thread-Base-1

Java 线程基础 1

1 线程概述

1.1 线程相关概念

进程

进程(Process)是计算机中的程序关于某数据集合上的一次运行活动,是操作系统进行资源分配与调度的基本单位.
可以把进程简单的理解为正在操作系统中运行的一个程序.

|