java多线程
文章平均质量分 88
波波仔86
生活与技术并发!
展开
-
JAVA Future类详解
1. Future的应用场景 在并发编程中,我们经常用到非阻塞的模型,在之前的多线程的三种实现中,不管是继承thread类还是实现runnable接口,都无法保证获取到之前的执行结果。通过实现Callback接口,并用Future可以来接收多线程的执行结果。Future表示一个可能还没有完成的异步任务的结果,针对这个结果可以添加Callback以便在任务执行成功或失败后作出相应的操作。 举个例子:比如去吃早点时,点了包子和凉菜,包子需要等3分钟,凉菜只需1分钟,如果...转载 2022-04-05 21:53:03 · 30747 阅读 · 2 评论 -
quartz.properties配置文件详解
我们通常是通过quartz.properties属性配置文件(默认情况下均使用该文件)结合StdSchedulerFactory来使用Quartz的。StdSchedulerFactory会加载属性配置文件并实例化一个Scheduler。默认情况下,Quartz会加载classpath下的”quartz.properties”文件作为配置属性,如果找不到则会使用quartz框架自己jar下org/quartz包底下的”quartz.properties”文件。当然你也可以指定”org.quartz...转载 2022-03-27 17:19:10 · 6006 阅读 · 1 评论 -
Quartz-整体设计思路分析
quartz概述quartz是一个用java实现的开源任务调度框架,可以用来创建简单或者复杂的任务调度,并且可以提供许多企业级的功能,比如JTA以及集群等,是当今比较流行的JAVA任务调度框架。1. 可以用来做什么Quartz是一个任务调度框架,当遇到以下问题时: 想在每月25号,自动还款; 想在每年4月1日给当年自己暗恋的女神发一封匿名贺卡; 想每隔1小时,备份一下自己的各种资料。 那么总结起来就是,在一个有规律的时间点做一些事情,并且这个规律可以非常复杂,复杂到转载 2022-03-19 21:33:40 · 529 阅读 · 0 评论 -
java并发编程:线程池使用
我们使用线程的时候就去创建一个线程,这样实现起来非常简便,但是就会有一个问题: 如果并发的线程数量很多,并且每个线程都是执行一个时间很短的任务就结束了,这样频繁创建线程就会大大降低系统的效率,因为频繁创建线程和销毁线程需要时间。 那么有没有一种办法使得线程可以复用,就是执行完一个任务,并不被销毁,而是可以继续执行其他的任务? 在Java中可以通过线程池来达到这样的效果。今天我们就来详细讲解一下Java的线程池,首先我们从最核心的ThreadPoolExecutor类中的方法讲起,然后再讲述转载 2022-03-18 22:10:15 · 276 阅读 · 0 评论 -
Java并发编程:Lock
一、synchronized的缺陷 synchronized是java中的一个关键字,也就是说是java语言内置的特征。那么为什么会出现Lock呢?我们知道如果一个代码块被synchronized修饰了,但一个线程获取了对应的锁,并执行该代码块时,其他线程便只能一直等待,等待获取锁的线程释放锁,而这里获取锁的线程释放锁只会有两种情况:1、获取锁的线程执行完了该代码块,然后...原创 2018-09-10 22:14:45 · 118 阅读 · 0 评论 -
java线程之间的通信(等待/通知机制)
线程开始运行,拥有自己的栈空间,就如同一个脚本一样,按照代码一步步的执行直到终止。但是,每个运行的线程,如果仅仅是孤立地运行,那么没有太大的价值,但如果多个线程能够相互配合完成工作,这将会带来巨大的价值。而java多线程的等待和通知机制就是用来完成线程之间的通信。场景: 一个线程修改了一个对象的值,而另一个线程感知到了变化,然后进行响应的操作,整个过程开始于一个线...原创 2018-09-04 20:33:18 · 461 阅读 · 0 评论 -
java多线程之内存可见性和原子性:Synchronized和volatile的比较
转载源自:https://blog.csdn.net/guyuealian/article/details/52525724在说明java多线程内存可见性之前,先来简单了解一下java内存模型。(1)Java所有变量都存储在主内存中(2)每个线程都有自己独立的工作内存,里面保存该线程的使用到的变量副本(该副本就是主内存中该变量的一份拷贝)(1)线程对共享变量的所有操作都必须在自己的工作内存中进行,...转载 2018-04-04 17:38:13 · 147 阅读 · 0 评论 -
synchorinzed对象监视器为Object时的使用
今天学习了java线程同步的synchronized用法,当监视器对象为Object时,总结了如下知识点:synchronized同步方法1、synchorized修饰非静态方法时,synchorinzed获得的锁都是对象锁,而不是把一段代码或方法当作锁,哪个线程先执行synchronized方法,哪个线程就持有该方法所属对象的锁Lock,那么其他线程只能呈等待状态,前提是多个线程访问的是同一个对...原创 2018-03-28 22:29:31 · 501 阅读 · 0 评论 -
java多线程编程核心技术——第一章学习总结
第一章主要介绍了java怎样创建一个线程及线程的特性,其中有一个Thread类的api比较容易误解。1、currentThread()currentThread()线程返回的是代码段正在被哪个线程调用的信息。public class Run { public static void main(String[] args) throws InterruptedException { ...原创 2018-03-27 22:31:10 · 188 阅读 · 0 评论 -
java守护线程
在java线程中有两种守护线程,一种是用户线程,另一种是守护线程。守护线程是一种特殊的线程,它的特性有“陪伴”的含义,当进程中不存在非守护线程了,则守护线程自动销毁。典型的守护线程就是垃圾回收线程。只有当最后一个非守护线程结束时,守护线程才随着JVM一同结束工作。例如:定义一个线程在run方法中设置永远不结束,启动后一直执行package com.iie;/** * Created by b...原创 2018-03-26 22:15:34 · 189 阅读 · 0 评论 -
java线程安全和不安全
线程安全就是多线程访问时,采用了加锁机制,当一个线程访问该类的某个数据时,进行保护,其他的线程不能进行访问直到该线程读取完,其他线程才可使用。不会出现数据不一致或者数据污染(Vector,HashTable)。线程不安全就是不提供数据访问保护,有可能出现多个线程先后更改数据造成所得到的数据是脏数据(ArrayList,LinkedList、HashMap等)。 如果你的代码所在的进程...原创 2018-03-20 20:09:31 · 246 阅读 · 0 评论 -
synchronized对象监视器为Class时的使用
synchronized加到静态方法上或者synchronized(class)代码块是给Class类上锁。Class锁对类的所有对象都其作用。例如:1、创建一个Service类package com.iie;/** * Created by bo on 2018/3/29. */public class Service { synchronized public static...原创 2018-03-29 22:39:13 · 601 阅读 · 0 评论