Java多线程编程与并发编程
文章平均质量分 93
主要介绍相关的内容
身影王座
人生在世,谦字当头;学海无涯,愿得一慧眼,以小观世界。
展开
-
Java多线程_Java多线程技能(2)
文章目录isAlive方法sleep()方法getId()方法停止线程停止不了的线程判断线程是否是停止状态能停止的线程--异常法在沉睡中停止能停止的线程--暴力停止使用return停止线程暂停线程独占不同步yeild方法线程优先级isAlive方法主要是用来判断当前线程是否处于活动状态。package multiply.com.test;public class MyThread extends Thread { @Override public void run() {原创 2021-10-13 20:49:12 · 115 阅读 · 0 评论 -
Java并发编程_原子类和并发容器
文章目录Atomic 原子类基本类型原子类数组类型原子类引用类型原子类对象的属性修改类型原子类并发容器ConcurrentHashMapCopyOnWriteArrayListConcurrentLinkedQueueBlockingQueueConcurrentSkipListMap本文内容参考于文章链接Atomic 原子类所谓原子类就是具有原子/原子操作特征的类。JUC 包中的原子类分为 4 类:基本类型,数组类型,引用类型,对象的属性修改类型.基本类型原子类使用原子的方式更新基原创 2021-11-18 20:23:53 · 556 阅读 · 0 评论 -
Java并发编程_Java中的锁
文章目录ThreadLocalThreadLocal 原理ThreadLocal 内存泄露问题Java中的锁Lock接口队列同步器队列同步器的实现分析同步队列独占式同步状态获取与释放共享式同步状态获取与释放独占式超时获取同步状态重入锁读写锁读写锁的实现分析锁降级Condition接口Condition的实现分析ThreadLocalThreadLocal类主要解决的就是让每个线程绑定自己的值,可以将ThreadLocal类形象的比喻成存放数据的盒子,盒子中可以存储每个线程的私有数据。如果你创建了一个原创 2021-11-18 15:26:17 · 458 阅读 · 0 评论 -
Java并发编程_Java内存模型(2)
文章目录final域的内存语义final域的重排序规则写final域的重排序规则读final域的重排序规则final域为引用类型为什么final引用不能从构造函数内“溢出”happens-beforeJMM的设计happens-before规则双重检查锁定与延迟初始化双重检查锁定的由来问题的根源基于volatile的解决方案基于类初始化的解决方案final域的内存语义与前面介绍的锁和volatile相比,对final域的读和写更像是普通的变量访问。final域的重排序规则对于final域,编译原创 2021-11-14 11:16:50 · 406 阅读 · 0 评论 -
Java并发编程_Java内存模型(1)
文章目录Java内存模型的基础并发编程模型的两个关键问题Java内存模型的抽象结构从源代码到指令序列的重排序happens-before简介重排序数据依赖性as-if-serial语义程序顺序规则顺序一致性数据竞争与顺序一致性顺序一致性内存模型同步程序的顺序一致性效果未同步程序的执行特性volatile的内存语义volatile的特性volatile写-读建立的happens-before关系volatile写-读的内存语义volatile内存语义的实现锁的内存语义锁的释放-获取建立的happens-bef原创 2021-11-12 17:03:57 · 640 阅读 · 0 评论 -
Java并发编程_挑战及底层实现原理
文章目录并发编程的挑战线程与进程的关系,区别及优缺点?并发与并行的区别?线程的生命周期和状态什么是上下文切换?死锁底层实现原理volatile的应用synchronized的实现原理与应用原子操作的实现原理并发编程的挑战线程与进程的关系,区别及优缺点?线程是进程划分成的更小的运行单位。线程和进程最大的不同在于基本上各进程是独立的,而各线程则不一定,因为同一进程中的线程极有可能会相互影响。线程执行开销小,但不利于资源的管理和保护;而进程正相反。程序计数器为什么是私有的?程序计数器私有主要是为了原创 2021-11-09 16:32:34 · 444 阅读 · 0 评论 -
Java多线程_拾遗增补
文章目录线程的状态线程组线程对象关联线程组:1级关联线程对象关联线程组:多级关联获取根线程组线程组里面加线程组组内的线程批量停止递归和非递归取得组内对象使线程具有有序性SimpleDateFormat非线程安全线程中的异常处理线程组内异常处理线程的状态package multiply.com.test;public class Run { public static void main(String[] args) { try { MyThread原创 2021-11-04 11:24:44 · 261 阅读 · 0 评论 -
Java多线程_单例模式与多线程
文章目录立即加载|饿汉模式延迟加载|懒汉模式使用静态内置类实现单例模式序列化与反序列化的单例模式使用static代码块实现单例模式立即加载|饿汉模式package multiply.com.test;public class Run { public static void main(String[] args) { MyThread t1 = new MyThread(); MyThread t2 = new MyThread(); My原创 2021-11-02 16:23:54 · 328 阅读 · 3 评论 -
Java多线程_定时器Timer
文章目录方法schedule(TimerTask task,Date time)方法schedule(TimerTask task,Date time)该方法的作用就是在指定日期执行一次某任务。package multiply.com.test;import java.text.ParseException;import java.text.SimpleDateFormat;import java.util.Date;import java.util.Timer;import java原创 2021-11-01 11:09:20 · 626 阅读 · 0 评论 -
Java多线程_Lock的使用
文章目录ReentrantLock类ReentrantLock类的使用使用Condition实现等待|通知生产者和消费者模式公平锁与非公平锁使用ReentrantReadWriteLock类读读共享ReentrantLock类ReentrantLock类的使用package multiply.com.test;public class Run { public static void main(String[] args) throws InterruptedException {原创 2021-10-28 21:50:32 · 370 阅读 · 0 评论 -
Java多线程_线程间通信
文章目录等待通知机制等待通知机制的实现当interrupt方法遇到了wait方法方法wait(long)的使用通知过早生产者和消费者模式实现通过管道进行线程间通信:字节流方法join的使用类ThreadLocal的使用验证线程变量的私有性等待通知机制等待通知机制的实现wait()作用就是使当前执行代码进程进行等待,只能在同步方法和同步块中调用。当前线程释放锁,在wait()返回前,线程及其其它线程竞争重新获得锁。notify()方法只能在同步方法和同步块中调用。package multip原创 2021-10-26 22:22:04 · 441 阅读 · 0 评论 -
Java多线程_对象及其变量的并发访问(2)
文章目录静态同步synchronized方法与synchronized(class)代码块数据类型String的常量池特性多线程的死锁内置类与静态内置类volatile关键字解决同步死循环synchronized代码块具有volatile数据同步功能静态同步synchronized方法与synchronized(class)代码块package multiply.com.test;public class Run { public static void main(String[] ar原创 2021-10-22 12:00:51 · 279 阅读 · 0 评论 -
Java多线程_对象及其变量的并发访问(1)
文章目录synchronized同步方法方法内的变量为线程安全实例变量为非线程安全多个对象多个锁synchronized方法与锁对象synchronized锁重入出现异常,锁自动释放同步不具有继承性synchronized同步语句块synchronized同步语句块的使用将任意对象作为对象检测器细化验证三个结论synchronized同步方法方法内的变量为线程安全方法中的变量不存在非线程安全问题,永远都是线程安全的,这个是由于方法内部变量是私有的特性造成的。实例变量为非线程安全这个在上一节中原创 2021-10-21 21:29:37 · 812 阅读 · 0 评论 -
Java多线程_Java多线程技能(1)
文章目录进程与线程使用多线程继承自Thread类实现Runnable接口实例变量与线程安全留意i--与System.out.println()的异常currentThread()方法进程与线程使用多线程技术后,可以在同一时间运行更多不同种类的任务。使用多线程一个进程在运行时候至少有一个线程,比如Java中的main函数。继承自Thread类package multiply.com.test;public class MyThread extends Thread{原创 2021-10-12 20:34:20 · 80 阅读 · 0 评论