![](https://img-blog.csdnimg.cn/20190927151101105.png?x-oss-process=image/resize,m_fixed,h_224,w_224)
多线程编程核心技术
文章平均质量分 90
《Java多线程编程核心技术》
贾欣晓
终身学习,共同成长。
展开
-
如何停止一个线程?
停止线程在java语言中并不像break语句那样干脆,还需要一些技巧性的处理。停止一个线程意味着在线程处理完任务之前停止正在做的操作,也就是放弃当前的操作,虽然这看起来非常简单,但是必须做好防范措施,以便达到预期的效果。停止一个线程可以使用Thread.stop()方法,但不推荐使用此方法,虽然它确实可以停止一个正在运行的线程,但是这个方法是不安全的,而且是被弃用作废的。大多数情况下,停止一个线程使用Thread.interrupt()方法,但这个方法不会终止一个正在运行的线程,还需要加入一个判断才可以完成原创 2022-06-26 14:44:07 · 4342 阅读 · 0 评论 -
synchronized关键字在同步代码块中的应用(下)
每一个*.java文件对应Class类的实例都是一个,在内存中是单例的,测试代码如下:Class类用于描述类的基本信息,包括有多少个字段,有多少个构造方法,有多少个普通方法等,为了减少对内存的高占用率,在内存中只需要存在一份Class类对象就可以了,所以被设计成单例的。关键字synchronized还可以应用在static静态方法上,如果这样写,那是对当前*.java文件对应的Class类对象进行持锁,Class类的对象是单例的,更具体地说,在静态static方法上使用synchronized关键字声明同原创 2022-06-25 23:35:17 · 220 阅读 · 0 评论 -
ThreadLocal与InheritableThreadLocal源码解析
变量值的共享可以使用public static变量的形式实现,所有的线程都使用同意给public static变量,那如何实现每一个线程都有自己的变量呢?JDK提供的ThreadLocal可用于解决这样的问题。类ThreadLocal的主要作用是将数据放入当前线程对象的Map中,这个Map是Thread类的实例变量。类ThreadLocal自己不管理、不存储任何数据,它只是数据和Map之间的桥梁,用于将数据放入Map中,执行流程如下:数据->ThreadLocal->currentThread()->Ma原创 2022-06-08 00:28:05 · 114 阅读 · 0 评论 -
synchronized关键字在同步代码块中的应用(上)
synchronized修饰方法的弊端如果A线程调用同步方法执行一个长时间的任务,那么B线程等待的时间就比较长,这种情况可以使用synchronized同步语句块来解决,以提高运行效率。synchronized方法是将当前对象作为锁,而synchronized代码块是将任意对象作为锁。可以将锁看成一个标识,哪个线程持有这个标识,就可以执行同步方法用同步代码块解决同步方法的弊端,提升效率public class Task { private String getData1; priva原创 2022-05-20 23:29:50 · 497 阅读 · 2 评论 -
synchronized关键字在同步方法中的应用
synchronized 同步方法synchronized关键字可用来保障原子性、可见性和有序性。非线程安全问题会在多个线程对同一个对象中的实例变量进行并发访问时发生,产生的后果就是“脏读”,也就是读取到的数据其实是被更改过的。线程安全是指获得实力变量的值是经过同步处理的,不会出现脏读的现象方法内的变量(局部变量)线程安全package com.example.synchronizeddemo;/** * @ClassName HasSelfPrivateNum * @Author ji原创 2022-05-18 23:16:45 · 833 阅读 · 0 评论