Java 多线程
Java 多线程
逆流者blog
不登高山,不知天之高也;不临深溪,不知地之厚也。
展开
-
Java 多线程(一)基本介绍
先说下几个概念程序(program) 是为完成特定任务、用某种语言编写的一组指令的集合。即指一段静态的代码,静态对象。进程(process) 是程序的一次执行过程,或是正在运行的一个程序。是一个动态的过程:有它自身的产生、存在和消亡的过程(生命周期)。如:运行中的网易云音乐播放器程序是静态的,进程是动态的进程作为资源分配的单位,系统在运行时会为每个进程分配不同的内存区域线程(thread) 进程可进一步细化为线程,是一个程序内部的一条执行路径。若一个进程同一时间并行执行多个线程,就是支持原创 2020-07-04 10:17:52 · 112 阅读 · 1 评论 -
Java 多线程(二)创建多线程的方式
创建线程JDK1.5之前创建线程方式:继承Thread类的方式实现Runnable接口的方式JDK5.0新增线程创建方式实现Callable接口使用线程池继承Thread类的方式定义子类继承Thread类。子类中重写Thread类中的run方法。创建Thread子类对象,即创建了线程对象。调用线程对象start方法:启动线程,调用run方法。代码实现/** * 创建一个子线程,完成1-100之间自然数的输出。同样地,主线程执行同样的操作 * 创建多线程的第一种方式:原创 2020-07-04 14:58:25 · 175 阅读 · 0 评论 -
Java 多线程(三)线程生命周期
线程生命周期JDK中用Thread.State类定义了线程的几种状态要想实现多线程,必须在主线程中创建新的线程对象。Java语言使用Thread类及其子类的对象来表示线程,在它的一个完整的生命周期中通常要经历如下的五种状态:新建: 当一个Thread类或其子类的对象被声明并创建时,新生的线程对象处于新建状态就绪:处于新建状态的线程被start()后,将进入线程队列等待CPU时间片,此时它已具备了运行的条件,只是没分配到CPU资源运行:当就绪的线程被调度并获得CPU资源时,便进入运行状态, r原创 2020-07-04 14:59:12 · 118 阅读 · 0 评论 -
Java 多线程(四)线程同步
线程同步看一个打印车票的例子/** * 此程序存在线程的安全问题:打印车票时,会出现重票、错票 */class Window1 implements Runnable { private int ticket = 100; @Override public void run() { while (true) { if (ticket > 0) { try { Thread.sleep原创 2020-07-04 15:00:00 · 185 阅读 · 0 评论 -
Java 多线程(五)线程的通信
wait() 与 notify() 和 notifyAll()三个方法是定义在java.lang.Object类中的wait():令当前线程挂起并放弃CPU、同步资源并等待,使别的线程可访问并修改共享资源,而当前线程排队等候其他线程调用notify()或notifyAll()方法唤醒,唤醒后等待重新获得对监视器的所有权后才能继续执行。notify():唤醒正在排队等待同步资源的线程中优先级最高者结束等待notifyAll ():唤醒正在排队等待资源的所有线程结束等待.。这三个方法只有在sy原创 2020-07-04 15:00:25 · 77 阅读 · 0 评论 -
Java 多线程 JUC(并发工具包)
在 Java 5.0 提供了 java.util.concurrent (简称JUC )包,在此包中增加了在并发编程中很常用的实用工具类,用于定义类似于线程的自定义子系统,包括线程池、异步 IO 和轻量级任务框架。提供可调的、灵活的线程池。还提供了设计用于多线程上下文中的 Collection 实现等。1 volatile 关键字 内存可见性内存可见性(Memory Visibility)是指当某个线程正在使用对象状态而另一个线程在同时修改该状态,需要确保当一个线程修改了对象状态后,其他线程能原创 2020-07-05 21:03:33 · 440 阅读 · 0 评论 -
Java 多线程 面试题
1、编写一个程序,开启 3 个线程,这三个线程的 ID 分别为 A、B、C,每个线程将自己的 ID 在屏幕上打印 10 遍,要求输出的结果必须按顺序显示。如:ABCABCABC…… 依次递归。/* * 编写一个程序,开启 3 个线程,这三个线程的 ID 分别为 A、B、C,每个线程将自己的 ID 在屏幕上打印 10 遍,要求输出的结果必须按顺序显示。 * 如:ABCABCABC…… 依次递归 */public class TestABCAlternate { public static原创 2020-07-04 22:43:31 · 3537 阅读 · 0 评论