java多线程编程核心技术-笔记】的更多相关文章

一.第一章 1.自定义线程类中实例变量针对其他线程有共享和不共享之分,自定义线程中的变量,如果是继承自thread类,则每个线程中的示例变量的更改,不影响其他线程2.当多个线程去访问一个局部变量是会产生 非线程安全的问题,需要加synchronize 关键字3.isAlive() 方法,判断当前的线程是否处于活动状态,已启动,且未终止.4.sleep() 方法,在指定的毫秒数内,让当前正在执行的线程休眠,但不释放锁5.停止,中断一个线程,可用stop(已废弃),推荐用interrupted()…
作为业务开发人员,能够在工作中用到的技术其实不多.虽然平时老是说什么,多线程,并发,注入,攻击!但是在实际工作中,这些东西不见得用得上.因为,我们用的框架已经把这些事做掉了. 比如web开发,外面有大量的请求进来,按理说,我们应该考虑并发问题.但其实,spring接到请求,分配到controller之后,就已经是线程安全的了,所以我们要做的就是,从controller开始,到最后请求响应结束,保证线程安全即可. 多线程好像有很多东西需要注意,阅读<Java 多线程编程核心技术>后,做个总结,总…
继承Thread类实现多线程 public class MyThread extends Thread { @Override public void run() { super.run(); System.out.println("MyThread..."); } public static void main(String[] args) { MyThread myThread = new MyThread(); myThread.start(); System.out.print…
数据类型String的常量池特性 在JVM中具有String常量池缓存的功能. public class Service { public static void print(String str){ try { synchronized (str) { while (true) { System.out.println(Thread.currentThread().getName()); Thread.sleep(500); } } } catch (Exception e) { e.prin…
Java多线程编程核心技术 这本书有利于对Java多线程API的理解,但不容易从中总结规律. JDK文档 1. Thread类 部分源码: public class Thread implements Runnable { private volatile char name[]; private int priority; private Thread threadQ; private long eetop; /* Whether or not to single_step this thre…
写这篇博客主要是给猿友们推荐一本书<Java多线程编程核心技术>. 之所以要推荐它,主要因为这本书写得十分通俗易懂,以实例贯穿整本书,使得原本抽象的概念,理解起来不再抽象. 只要你有一点点Java基础,你就可以尝试去阅读它,相信定会收获甚大! 博主之前网上找了很久都没完整pdf电子版的,只有不全的试读版,这里博主提供免费.清晰.完整版供各位猿友下载: http://download.csdn.net/detail/u013142781/9452683 刚刚已经提到,<Java多线程编程核…
了解多线程 进程和多线程的概念和线程的优点: 提及多线程技术,不得不提及"进程"这个概念.百度百科对"进程"的解释如下: 进程(Process)是计算机中的程序关于某数据集合上的一次运行活动,是系统进行资源分配和调度的基本单位,是操作系统结构的基础. 看起来可能比较抽象,如果我们打开任务管理器,那么"进程"就可以看成下面在操作系统中运行的exe程序. 所以进程是受操作系统管理的基本运行单元! 那什么是线程呢? 线程可以理解为在进程中独立运行的子任…
前言:在阅读<Java多线程编程核心技术>过程中,对书中程序代码Thread.currentThread()与this的区别有点混淆,这里记录下来,加深印象与理解. 具体代码如下: public class MyThread09 extends Thread { public MyThread09() { System.out.println("MyThread09 Constructor begin"); System.out.println("Thread.c…
线程是操作系统中独立的个体,但这些个体如果不经过特殊的处理就不能成为一个整体.线程间的通信就是成为整体的必用方案之一,可以说,使线程间进行通信后,系统之间的交互性会更强大,在大大提高CPU利用率的同时还会使程序员对各线程任务在处理的过程中进行有效的把控与监督. 在本章中需要着重掌握的技术点如下: 使用wait/notify实现线程间的通信 生产者/消费者模式的实现 方法join的使用 ThreadLocal类的使用 1.等待 / 通知机制 通过本节可以学习到,线程与线程之间不是独立的个体,它们彼…
本文主要介绍Java多线程中的同步,也就是如何在Java语言中写出线程安全的程序,如何在Java语言中解决非线程安全的相关问题.阅读本文应该着重掌握如下技术点: synchronized对象监视器为Object时的使用. synchronized对象监视器为Class时的使用. 非线程安全是如何出现的. 关键字volatile的主要作用. 关键字volatile与synchronized的区别及使用情况. 1.synchronized同步方法 "非线程安全"其实会在多个线程对同一个对象…
1.进程和线程 一个程序就是一个进程,而一个程序中的多个任务则被称为线程. 进程是表示资源分配的基本单位,线程是进程中执行运算的最小单位,亦是调度运行的基本单位. 举个例子: 打开你的计算机上的任务管理器,会显示出当前机器的所有进程,QQ,360等,当QQ运行时,就有很多子任务在同时运行.比如,当你边打字发送表情,边好友视频时这些不同的功能都可以同时运行,其中每一项任务都可以理解成"线程"在工作. 2.使用多线程 在Java的JDK开发包中,已经自带了对多线程技术的支持,可以很方便地进…
实现多线程的两种方式 继承Thread类,重写Thread类中的run方法 public class MyThread extends Thread{ @Override public void run(){ super.run(); System.out.println("this is myThread run"); } } public static void main(String[] args) { Thread myThread=new MyThread(); myThre…
不使用等待通知机制 实现线程间通信的 疑问分析 2018年04月03日 17:15:08       ayf 阅读数:33 编辑 <java多线程编程核心技术>一书第三章开头,有如下案例: 线程A: package extthread; import mylist.MyList; public class ThreadA extends Thread { private MyList list; public ThreadA(MyList list) { super(); this.list…
<Java多线程编程核心技术> @author ergwang https://www.cnblogs.com/ergwang/ 文章末尾附pdf和png下载链接 第1章 Java多线程技能 1. 进程与线程 区别? 联系? 这篇博客记录了 https://www.cnblogs.com/ergwang/p/15997503.html 2. 创建多线程的方式,有几种?怎么创建 继承Thread类 (一般不单独用) 实现Runnable接口 + Thread对象 实现Callable接口+Fut…
一.说明 周末抽空重新学习了下多线程,为了方便以后查阅,写下学习笔记. 有效利用多线程的关键是理解程序是并发执行而不是串行执行的.例如:程序中有两个子系统需要并发执行,这时候需要利用多线程编程. 通过多线程的使用,可以编写出非常高效的程序.但如果创建了太多的线程,程序执行的效率反而会降低. 同时上下文的切换开销也很重要,如果创建太多的线程,CPU花费在上下文的切换时间将对于执行程序的时间. 二.Java多线程编程 概念 在学习多线程时,我们应该首先明白另外一个概念. 进程:是计算机中的程序关于某…
第 1 章 Java 多线程技能 本章主要内容 线程的启动 如何使线程暂停 如何使线程停止 线程的优先级 线程安全相关的问题 1.1 进程和多线程的概念及线程的优点 进程是操作系统结构的基础:是一次程序的执行:是一个程序及其数据在处理机上顺序执行时所发生的活动:是程序在一个数据集合上运行的过程,它是系统进行资源分配和调度的一个独立单位.进程是操作系统管理的基本运行单元. 那什么是线程呢?线程可以理解成是在进程中独立运行的子任务. 使用多线程技术后,可以在同一时间内运行更多不同种类的任务. 1.2…
第 4 章 Lock 的使用 本章主要内容 ReentrantLocal 类的使用. ReentrantReadWriteLock 类的使用. 4.1 使用 ReentrantLock 类 在 Java 多线程中,可以使用 synchronized 关键字来实现线程之间同步互斥,但在 JDK 1.5 中新增加了 ReentrantLock 类也是达到同样的效果,并且在扩展功能上也更加强大,比如具有嗅探锁定.多路分支通知等功能,而且在使用上也比 synchronized 更加的灵活. 4.1.1…
基本概念 进程是操作系统结构的基础,是一次程序的执行,是一个程序及其数据结构在处理机上顺序执行时所发生的活动,是程序在一个数据集合上运行的过程,是系统进行资源分配和调度的独立单位.线程可以理解成是在进程中独立运行的子任务. 继承Thread类实现多线程 public class MyThread extends Thread { @Override public void run() { super.run(); System.out.println("MyThread..."); }…
1.进程和线程的概念 1.进程:进程是操作系统的基础,是一次程序的执行,是一个程序及其数据在处理机上顺序执行时所发生的活动,是程序在一个数据集合上运行的过程,他是系统进行资源分配和调度的一个独立单位. 2.线程:线程可以理解为进程中独立运行的子任务,线程只能归属于一个进程并且它只能访问该进程所拥有的资源. 2.实现多线程编程的方式 1.继承Thread类,该类在源码实现上,也是实现了Runnable接口,使用该类最大的局限性就是java不支持多继承. 2.实现Runnable接口. 3.常用AP…
目录 第一章 Java多线程技能 (待续...)…
线程状态验证 public class MyThread extends Thread { public MyThread() { System.out.println("构造方法中的状态:" + Thread.currentThread().getState());//RUNNABLE } @Override public void run() { System.out.println("run方法中的状态:" + Thread.currentThread().g…
使用ReentrantLock类 在Java多线程中,可以使用synchronized关键字来实现线程之间的同步互斥,但在JDK1.5中新增加了ReentrantLock类也能达到同样的效果,并且在扩展功能上也更加强大,比如具有嗅探锁定.多路分支通知等功能,而且在使用上也比synchronized更加灵活. 使用ReentrantLock实现同步:测试1 public class Service { private Lock lock = new ReentrantLock(); public…
Java多线程 线程可以理解为是在进程中独立运行的子任务. Java多线程 使用方法 Java中实现多线程主要有以下两种方法: 继承Thread,而后实例化该对象调用start()即启动了新线程; 实现Runnable,通过new Thread(Runnable run)实例化该线程,而后调用start(); 常用方法 Thread.currentThread() 静态方法,获取当前线程对象: isAlive() 判断线程是否处于活动状态,即线程已启动且尚未终止: Thread.sleep(lo…
线程中出现异常的处理 package Seven; public class MyThread extends Thread { @Override public void run() { String username = null; System.out.println(username.hashCode()); } } package Seven; public class Main1 { public static void main(String[] args) { MyThread…
一.基本概念理解:1.1.进程和线程的理解1.2.同步和异步的理解(阻塞模式和非阻塞模式)1.3 线程间共享变量和不共享变量二.多线程的实现方式和构造方法:2.1 实现方式:2个2.2 构造方法:8个三.线程的常用方法3.1 start()方法3.2 run()方法:让线程运行3.3 sleep()方法:让线程休眠3.4 suspend()方法和resume()方法:让线程暂停与恢复3.5 .stop()方法:让线程停止(已废弃+不建议)3.6 interrupt()方法:让线程停止(给线程打上…
一.基本概念1.安全的变量和不安全的变量2.脏读的理解3.锁重入:4.锁释放5.死循环:二.synchronized 的理解:三.synchronized 同步方法3.1 同步方法不具有继承性.3.2 同步方法的弊端:四.synchronized 同步代码块4.1 synchronized(this)同步代码块4.1.1 实现:4.1.2 注意:4.2 synchronized(x):将任意对象作为对象监视器:4.3 synchronized.synchronized(this)和synchro…
第 7 章 拾遗增补 本章主要内容 线程组的使用. 如何切换线程状态. SimpleDataFormat 类与多线程的解决办法. 如何处理线程的异常. 7.1 线程的状态 线程对象在不同的运行时期有不同的状态,状态信息就存在于 State 枚举类中,如下图: 每个枚举类型的解释如下图: 调用与线程有关的方法是造成线程状态改变的主要原因,其因果关系如下图: 在调用与线程有关的方法后,会进入不同的次线程状态,这些状态之间某些是可双向切换的,比如 WAITING 和 RUNNING 状态之间可以循环地…
第 5 章 定时器 Timer 定时 / 计划功能在移动开发领域使用较多,比如 Android 技术.定时计划任务功能在 Java 中主要使用的就是 Timer 对象,他在内部使用多线程的方式进行处理,所以它和线程技术还是有非常大的关联的. 本章主要内容 如何实现指定时间执行任务. 如何实现按指定周期执行任务. 5.1 定时器 Timer 的使用 在 JDK 库中 Timer 类主要负责计划任务的功能,也就是在指定的时间开始执行某一个任务. Timer 类的方法列表: Timer 类的主要作用就…
第 2 章 对象及变量的并发访问 本章主要内容 synchronized 对象监视器为 Object 时的使用. synchronized 对象监视器为 Class 时的使用. 非线程安全是如何出现的. 关键字 volatile 的主要作用. 关键字 volation 与 synchronized 的区别及使用情况. 2.1 synchronized 同步方法 “非线程安全”其实会在多个线程对同一个对象中的实例变量进行并发访问时发生,产生的后果就是“脏读”,也就是取到的数据其实是被更改过的.而“…
概念:可以理解为在进程中独立运行的子任务.比如,QQ.exe在运行时就有很多子任务在运行,好友视屏线程,下载文件线程,传输数据线程等等. 优点:1.提升CPU资源利用率,提升系统性能. 一.多线程的实现 1.1.继承Thread类(extends Thread),Thread类实现了Runnable接口 public class Thread implements Runnable public class MyThread extends Thread{ @Override public vo…