随笔分类 - Java 线程
摘要:Java 还为线程安全提供了一些工具类,如 ThreadLocal 类,它代表一个线程局部变量,通过把数据放在 ThreadLocal 中就可以让每个线程创建一个该变量的副本,从而避免并发访问的线程安全问题。除此之外,Java 5 还新增了大量的线程安全类。 ThreadLocal 类 早在 JDK
阅读全文
摘要:系统启动一个新线程的成本是比较高的,因为它涉及与操作系统交互。在这种情形下,使用线程池可以很好地提高性能,尤其是当程序中需要创建大量生存期很短暂的线程时,更应该考虑使用线程池。 与数据库连接池类似的是,线程池在系统启动时即创建大量空闲的线程,程序将一个 Runnable 对象或 Callable 对
阅读全文
摘要:Java 使用 ThreadGroup 来表示线程组,它可以对一批线程进行分类管理,Java 允许程序直接对线程组进行控制。对线程组的控制相当于同时控制这批线程。用户创建的所有线程都属于指定线程组,如果程序没有显式指定线程属于哪个线程组,则该线程属于默认线程组。在默认情况下,子线程和创建它的父线程处
阅读全文
摘要:当线程在系统内运行时,线程的调度具有一定的透明性,程序通常无法准确控制线程的轮换执行,但 Java 也提供了一些机制来保证线程协调运行。 传统的线程通信 假设现在系统中有两个线程,这两个线程分别代表存款者和取钱者——现在假设系统有一种特殊的要求,系统要求存款者和取钱者不断地重复存款、取钱的动作,而且
阅读全文
摘要:线程安全问题 关于线程安全问题,有一个经典的问题——银行取钱的问题。银行取钱的基本流程基本上可以分为如下几个步骤。 用户输入账户、密码,系统判断用户的账户、密码是否匹配。 用户输入取款金额。 系统判断账户余额是否大于取款金额。 如果余额大于取款金额,则取款成功;如果余额小于取款金额,则取款失败。 乍
阅读全文
摘要:Java 的线程支持提供了一些便捷的工具方法,通过这些便捷的工具方法可以很好地控制线程的执行。 join 线程 Thread 提供了让一个线程等待另一个线程完成的方法—— join() 方法。当在某个程序执行流中调用其他线程的 join() 方法时,调用线程将被阻塞,直到被 join() 方法加入的
阅读全文
摘要:当线程被创建并启动以后,它既不是一启动就进入了执行状态,也不是一直处于执行状态,在线程的生命周期中,它要经过新建(New)、就绪(Runnable)、运行(Running)、阻塞(Blocked)和死亡(Dead)5种状态。尤其是当线程启动以后,它不可能一直“霸占”着 CPU 独自运行,所以 CPU
阅读全文
摘要:Java 使用 Thread 类代表线程,所有的线程对象都必须是 Thread 类或其子类的实例。每个线程的作用是完成一定的任务,实际上就是执行一段程序流(一段顺序执行的代码)。 Java 使用线程执行体来代表这段程序流。 继承 Thread 类创建线程类 通过继承 Thread 类来创建并启动多线
阅读全文
摘要:几乎所有的操作系统都支持同时运行多个任务,一个任务通常就是一个程序,每个运行中的程序就是一个进程。当一个程序运行时,内部可能包含了多个顺序执行流,每个顺序执行流就是一个线程。 线程和进程 几乎所有的操作系统都支持进程的概念,所有运行中的任务通常对应一个进程(Process)。当一个程序进入内存运行时
阅读全文

浙公网安备 33010602011771号