多线程并行开发
rainyear
这个作者很懒,什么都没留下…
展开
-
Callabl Future线程池相关
发送邮件,查询数据多条记录,把查询到的参数,调用第三方调口返回都用到了线程池。Callable是类似于Runnable的接口,实现Callable接口的类和实现Runnable的类都是可被其它线程执行的任务。Callable和Runnable有几点不同:(1)Callable规定的方法是call(),而Runnable规定的方法是run().(2)Callable的任务执行后可返回值,而Runnable的任务是不能返回值的。(3)call()方法可抛出异常,而run()方法是不能抛出异常的。原创 2021-08-10 15:06:12 · 117 阅读 · 0 评论 -
Master-Worker模式的java代码模拟实现
Master-Worker模式是常用的并行模式。它的核心思想是系统由两类进程协作工作。Master进程和Worker进程。Master负 责接收和分配任务。Worker负责处理master分配的子任务。当Worker子进程处理完成后,会将结果返回给Master,由 Master做归纳总结。它的好处是将一个大任务分解成若干小任务,并行执行,从而提高了系统的吞吐量。 以下为代码实现部分,各部分有注释。1234Master的java代码实现import jav...转载 2021-07-05 17:45:04 · 106 阅读 · 0 评论 -
线程池
最近业务需求,需要导出大量数据到Excel文档中。1>Action文件 //ExecutorService pool = Executors.newSingleThreadExecutor();// 记录日志 异步将导出的xls文件写到服务器的制定目录ExpProductThread thread = new ExpProductThread(new Long(0),this.g原创 2013-04-26 17:13:14 · 513 阅读 · 0 评论 -
Java 并发核心编程(转)
Java 并发核心编程(转)Java 并发核心编程内容涉及:1、关于java并发2、概念3、保护共享数据4、并发集合类5、线程6、线程协作及其他 1、关于java并发自从java创建以来就已经支持并发的理念,如线程和锁。这篇指南主要是为帮助java多线程开发人员理解并发的核心概念以及如何应用这些理念。本文的主题原创 2013-04-26 17:16:05 · 615 阅读 · 0 评论 -
java线程:三种方式实现生产者消费者问题_2
java线程:三种方式实现生产者消费者问题_2分类: java_线程2012-07-03 14:31 37人阅读 评论(0) 收藏 举报上一种方式是采用synchronized关键字实现生产者消费者的问题,那是传统的做法,现在采用jdk1.5语法的新增的并发机制实现,以下是仓库类的具体代码实现(生产者类、消费者类类均不变,请参考上一篇文章:《三种方式实现生产者消费者_1》)原创 2013-04-26 17:15:45 · 473 阅读 · 0 评论 -
Client访问服务器
public class Test { private static final String baseUrl="http://localhost:8082/TestServer"; public void testMultivaluedMap (){ ClientConfig cc = new DefaultClientConfig();原创 2013-04-26 17:14:42 · 720 阅读 · 0 评论 -
java中join(),yield(),sleep()以及wait()的区别(转)
java之yield(),sleep(),wait()区别详解-备忘笔记博客分类: java-->>线程java线程sleep yieldrun start 1、sleep()使当前线程(即调用该方法的线程)暂停执行一段时间,让其他线程有机会继续执行,但它并不释放对象锁。也就是说如果有synchronized同步快,其他线程仍然不能访问共享数据。注意该方法要捕捉异常。例如有原创 2013-04-26 17:14:10 · 836 阅读 · 0 评论 -
使用BoneCP的必备条件
使用BoneCP需要如下类库支持:被连接的数据库的JDBC驱动程序,这个可以到该数据库厂商网站下载;Google的集合框架Guava,它的网址是:http://code.google.com/p/guava-libraries/,这个需要说明的是BoneCP官方网站说的必备框架是Google Collect框架,但是这个框架已经不再支持了,而是转为新的集合框架Guava;SLF4J日志原创 2013-04-26 17:13:12 · 737 阅读 · 0 评论 -
基于Java的WebService的客户端开发
分类: WebService 2012-03-06 11:27 848人阅读 评论(0)收藏举报webservicejavastringexceptionserviceobject1.JAX-WS选择“发布”按钮的左边第二个——》选择New Web Service Client——》选择Project与Framework——》在WSDL URL中输入WSDL地址转载 2014-01-10 01:51:14 · 655 阅读 · 0 评论 -
@Async @Scheduled 调度
spring 3中的@async初探博客分类: JAVA相关spring 在spring 3中,@Async注解能让某个方法快速变为异步执行,马上来先DEMO上手下。 假如在网站的用户注册后,需要发送邮件,然后用户得到邮件确认后才能继续其他工作; 假设发送是一个很耗费时间的过程,因此需要异步。 1 namespace要注意,加上task转载 2014-01-22 00:41:12 · 2841 阅读 · 0 评论 -
Java多线程 阻塞队列和并发集合
Java多线程 阻塞队列和并发集合Java多线程阻塞队列和并发集合 本章主要探讨在多线程程序中与集合相关的内容。在多线程程序中,如果使用普通集合往往会造成数据错误,甚至造成程序崩溃。Java为多线程专门提供了特有的线程安全的集合类,通过下面的学习,您需要掌握这些集合的特点是什么,底层实现如何、在何时使用等问题。3.1BlockingQueue接口java阻塞队列应用于转载 2014-01-23 16:05:27 · 738 阅读 · 0 评论 -
Java多线程-新特征-信号量Semaphore
简介信号量(Semaphore),有时被称为信号灯,是在多线程环境下使用的一种设施, 它负责协调各个线程, 以保证它们能够正确、合理的使用公共资源。概念Semaphore分为单值和多值两种,前者只能被一个线程获得,后者可以被若干个线程获得。以一个停车场运作为例。为了简单起见,假设停车场只有三个车位,一开始三个车位都是空的。这时如果同时来了五辆车,看门人允许其中三辆不受阻碍的进入,然转载 2014-01-26 17:44:43 · 573 阅读 · 0 评论 -
CompletableFuture 组合式异步编程(转)
CompletableFuture 组合式异步编程 转发(https://blog.csdn.net/itguangit/article/details/78624404)创建异步计算并获取计算结果.使用非阻塞操作提升吞吐量.设计和实现异步API.如何以异步的方式使用同步的API.如何对两个或多个异步操作进行流水线和合并操作.如何处理异步操作的完成状态.现在,很少有网站或者网络应...转载 2018-12-14 09:08:10 · 743 阅读 · 0 评论 -
QLExpress在Java 阿里
QLExpress在Java&Scala中使用问题需求: 简单的规则引擎(支持四则运算),scala 下运行。先尝试在java下测试demo。资料 artifact : <dependency> <groupId>com.alibaba</groupId> <artifactId>QLExpress</artifa...转载 2018-12-20 19:09:50 · 2614 阅读 · 0 评论 -
java线程:互斥锁与读写锁
java线程:互斥锁与读写锁分类: java_线程2012-07-04 02:52 67人阅读 评论(0) 收藏 举报两种互斥锁机制:1、synchronized2、ReentrantLockReentrantLock是jdk5的新特性,采用ReentrantLock可以完全替代替换synchronized传统的锁机制,而且采用ReentrantLock的方式更原创 2013-04-26 17:15:52 · 3188 阅读 · 0 评论 -
java线程:一个死锁的小程序
死锁是这样一种情形:多个线程同时被阻塞,它们中的一个或者全部都在等待某个资源被释放。由于线程被无限期地阻塞,因此程序不可能正常终止。 导致死锁的根源在于不适当地运用“synchronized”关键词来管理线程对特定对象的访问。“synchronized”关键词的作用是,确保在某个时刻只有一个线程被允许执行特定的代码块,因此,被允许执行的线程首先必须拥有对变量或对象的排他性的原创 2013-04-26 17:16:02 · 558 阅读 · 0 评论 -
线程堵塞
线程堵塞堵塞状态是前述四种状态中最有趣的,值得我们作进一步的探讨。线程被堵塞可能是由下述五方面的原因造成的:(1) 调用sleep(毫秒数),使线程进入“睡眠”状态。在规定的时间内,这个线程是不会运行的。(2) 用suspend()暂停了线程的执行。除非线程收到resume()消息,否则不会返回“可运行”状态。(3) 用wait()暂停了线程的执行。除非线程收到nofify()原创 2013-04-26 17:14:14 · 721 阅读 · 0 评论 -
java线程:三种方式实现生产者消费者问题_1
java线程:三种方式实现生产者消费者问题_1分类: java_线程2012-07-03 13:51 45人阅读 评论(0) 收藏 举报本人采用java语言,用三种方式实现生产者——消费者的经典问题,至于生产者和消费的问题就不多说了,以下是第一种方式的具体代码:[java] view plaincopy"font-family:A原创 2013-04-26 17:15:42 · 726 阅读 · 0 评论 -
java oject 转化成XML文件,发送请求到服务器,返回XML文件
StringWriter writer1 = new StringWriter(); JAXBContext jc = JAXBContext.newInstance(Transactions.class); Marshaller ma = jc.createMarshaller(); ma.setProperty(Ma原创 2013-04-26 17:14:39 · 465 阅读 · 0 评论 -
线程并发
1:>内存模型究竟什么是内存模型?内存模型描述了程序中各个变量(实例域、静态域和数组元素)之间的关系2>线程安全的本质体现在两个方面,A变量安全:多线程同时运行一段代码B线程同步:一个线程还没执行完,另一个线程又进来接着执行。3>同步请求和异步请求的区别 同步——使用者通过单个线程调用服务;该线程发送请求,在服务运行时阻塞,并且等待响应。(打电话) 异步——原创 2013-04-26 17:14:25 · 411 阅读 · 0 评论 -
特殊的队列:BlockingQueue 使用(转)
本例介绍一个特殊的队列:BlockingQueue,如果BlockQueue是空的,从BlockingQueue取东西的操作将会被阻断进入等待状态,直到BlockingQueue进了东西才会被唤醒.同样,如果BlockingQueue是满的,任何试图往里存东西的操作也会被阻断进入等待状态,直到BlockingQueue里有空间才会被唤醒继续操作. 本例再次实现11.4线程----条件Co原创 2013-04-26 17:14:18 · 482 阅读 · 0 评论 -
Spring 线程池使用
Spring 线程池使用/*** */一个日志管理的类:在批理更新,插入,等操作package com.xiu.order.core.orders.impl;import java.util.List;import org.springframework.core.task.TaskExecutor;import com.xiu.common.dao原创 2013-04-26 17:14:16 · 661 阅读 · 0 评论 -
java synchronized与lock区别 转
java synchronized与lock区别 synchronized 修饰方法时 表示同一个对象在不同的线程中 表现为同步队列如果实例化不同的对象 那么synchronized就不会出现同步效果了1.对象的锁 所有对象都自动含有单一的锁。 JVM负责跟踪对象被加锁的次数。如果一个对象被解锁,其计数变为0。在任务(线程)第一次给对象加锁的时候,计数变为1。每当这个相同的原创 2013-04-26 17:17:50 · 1129 阅读 · 0 评论 -
线程同步与异步
Java中的线程同步与异步如何理解? 同步和异步最大的区别就在于。一个需要等待,一个不需要等待。比如广播,就是一个异步例子。发起者不关心接收者的状态。不需要等待接收者的返回信息电话,就是一个同步例子。发起者需要等待接收者,接通电话后,通信才开始。需要等待接收者的返回信息多线程并发时,多个线程同时请求同一个资源,必然导致此资源的数据不安全,A线程修改了B线程的处理的数原创 2013-04-26 17:16:19 · 483 阅读 · 0 评论 -
java线程:信号量
Java 信号量 Semaphore 介绍Semaphore当前在多线程环境下被扩放使用,操作系统的信号量是个很重要的概念,在进程控制方面都有应用。Java 并发库 的Semaphore 可以很轻松完成信号量控制,Semaphore可以控制某个资源可被同时访问的个数,通过 acquire() 获取一个许可,如果没有就等待,而 release() 释放一个许可。比如在Windows下可以设置原创 2013-04-26 17:15:59 · 459 阅读 · 0 评论 -
java数据结构:ConcurrentSkipListSet<E>与CopyOnWriteArraySet<E>
分类: java_数据结构 java_线程2012-07-05 13:59 313人阅读 评论(0) 收藏 举报[java] view plaincopyimport java.util.concurrent.ConcurrentSkipListSet; import java.util.concurrent.ExecutorService;原创 2013-04-26 17:15:57 · 1265 阅读 · 0 评论 -
java线程:关于Callable和Future的简单使用:有返回值的线程
分类: java_线程2012-07-03 19:25 53人阅读 评论(0) 收藏 举报[java] view plaincopyimport java.util.Random; import java.util.concurrent.Callable; import java.util.concurrent.ExecutorServi原创 2013-04-26 17:15:55 · 1701 阅读 · 0 评论 -
java线程:三种方式实现生产者消费者问题_3
java线程:三种方式实现生产者消费者问题_3分类: java_线程2012-07-03 15:02 36人阅读 评论(0) 收藏 举报实现生产者——消费者问题的第三种方式:使用java5提供的java.util.concurrent.BlockingQueue阻塞队列实现,你可以看到仓库类代码实现更加简洁了。同样,生产者类、消费者类都不变化(《java线程:三种方式实现生原创 2013-04-26 17:15:50 · 696 阅读 · 0 评论 -
java线程:几个实用的线程工具类
java线程:几个实用的线程工具类分类: java_线程2012-07-04 16:29 89人阅读 评论(0) 收藏 举报CyclicBarrier[java] view plaincopyimport java.util.concurrent.CyclicBarrier; import java.util.concurren原创 2013-04-26 17:15:47 · 568 阅读 · 0 评论 -
java ExecutorService 线程池Callable 和 Future接口
javaEye转载(java多线程 Callable 的实现),里面涉及到ExecutorServiceJava代码 import java.util.concurrent.Callable; import java.util.concurrent.ExecutorService; import java.util.concurrent.Executo原创 2013-04-26 17:14:46 · 612 阅读 · 0 评论 -
java并发编程实践笔记(转)
一、 保证线程安全的三种方法: A. 不要跨线程访问共享变量B. 使共享变量是final类型的C. 将共享变量的操作加上同步二、 一开始就将类设计成线程安全的, 比在后期重新修复它,更容易.三、 编写多线程程序, 首先保证它是正确的, 其次再考虑性能.四、 无状态或只读对象永远是线程安全的.五、 不要将一个共享变量裸露在多线程环境下(无同步或不可变性保护)六、 多线原创 2013-04-26 17:16:48 · 476 阅读 · 0 评论