Java Multi-Thread Concurrent
Bwz_Learning
Change the world by program.
展开
-
Java死锁的例子
1、一个Java死锁的程序public class DeadLock { private String A = "A"; private String B = "B"; public static void main(String[] args) { new DeadLock().deadLock(); } private void deadLock() { Thr原创 2016-12-01 13:45:24 · 377 阅读 · 0 评论 -
Java主线程等待子线程执行完毕-CountDownLatch
主线程代码//Main主线程 publicclassMainThread { publicstaticvoid main(String[] args) throwsInterruptedException { longstartTime = System.currentTimeMillis(); intthreadNum = 5;//线程数原创 2017-06-14 16:54:47 · 484 阅读 · 0 评论 -
ThreadPoolExecutor的参数介绍
ThreadPoolExecutor的介绍线程池类为java.util.concurrent.ThreadPoolExecutor,常用构造方法为:ThreadPoolExecutor(int corePoolSize, int maximumPoolSize, long keepAliveTime, TimeUnit u原创 2017-06-18 17:16:30 · 926 阅读 · 0 评论 -
多线程下的单例模式
在所有的设计模式中,单例模式是我们在项目开发中最为常见的设计模式之一,而单例模式有很多种实现方式,你是否都了解呢?高并发下如何保证单例模式的线程安全性呢?这篇文章主要讨论,多线程保证单例模式的线程安全。饿汉式单例使用饿汉式的单例,是指在方法调用前,实例就已经创建好了。在多线程下是安全的。代码如下:public class MySingleton { private static MySing原创 2017-05-01 19:27:34 · 1052 阅读 · 0 评论 -
线程池技术
1、线程池技术的简单概括 对于服务端的程序,经常面对的是客户端传入的短小(执行时间短、工作内容较为单一)任务,需要服务端快速处理并返回结果。如果服务端每次接受到一个任务,创建一个线程,然后进行执行,这在原型阶段是个不错的选择,但是面对成千上万的任务递交进服务器时,如果还是采用一个任务一个线程的方式,那么将会创建数以万记的线程,这不是一个好的选择。因为这会使操作系统频繁的进行线程上下原创 2017-02-17 11:54:45 · 660 阅读 · 0 评论 -
ThreadLocal-------结合Filter用于管理Web开发中数据库的事务
1、利用 ThreadLocal和Filter,管理Web开发中数据库事务的原理图解 2、TransactionFilter的实现 2.1 关于事务Filter的讲解 对于事务相关的Filter,应该在请求的路径,里面含数据库的操作时,才会开启事务。如果访问的是静态资源,例如,1.png就不应该开启事务。所以事务的开启,不是一进入到Filte原创 2016-12-14 14:55:17 · 895 阅读 · 1 评论 -
ThreadLocal-------线程范围内的数据共享
1、ThreadLocal的简介 ThreadLocal,即线程变量,是一个以ThreadLocal对象为键、任意对象为值的存储结构。这个结构被附带在线程上,也就是说一个线程可以根据一个ThreadLocal对象查询到绑定在这个线程上的一个值。 可以通过set(T)方法来设置一个值,在当前线程下再通过get()方法获取到原先设置的值。2、时间差的计算原创 2016-12-02 20:40:14 · 723 阅读 · 0 评论 -
Java中线程间的通信(synchronized,wait,notify)
1、synchronized关键字 线程开始运行,拥有自己的栈空间,就如同一个脚本一样,按照既定的代码一步一步地执行,直到终止。但是,每个运行中的线程,如果仅仅是孤立地运行,那么没有一点儿价值,或者说价值很少,如果多个线程能够相互配合完成工作,这将会带来巨大的价值。 关键字synchronized可以修饰方法或者以同步块的形式来进行使用,它主要确保多个线程在同一原创 2016-12-02 16:26:41 · 575 阅读 · 0 评论 -
守护(Daemon)线程
1、守护(Daemon)线程简介 守护线程是一中特殊的线程,就和它的名字一样,他是系统的守护者,在后台默默的完成一些系统性的服务,比如垃圾回收线程,JIT线程就可以理解为守护线程。与之对应的是用户线程。用户线程可以认为是系统的工作线程,它会完成这个程序应该要完成的业务操作。如果用户线程全部结束,这也就意味着这个程序实际上无事可做了。守护线程要守护的对象已经不存在了,那么整个应用程序原创 2016-12-02 20:21:11 · 629 阅读 · 0 评论 -
Java中多线程互斥访问的实现
1、没有实现线程互斥的函数 1.1 没有实现多线程互斥访问的函数[java] view plain copy print?static class Outputer { public void output(String name) { int len = name原创 2016-12-02 15:48:56 · 4497 阅读 · 0 评论 -
Java中如何正确的终止线程
1、Java中API自带的stop()方法,来终止线程 查阅JDK,不难发现Thread提供了一个stop()方法,但是stop()方法是一个被废弃的方法。为什么stop()方法被废弃而不被使用呢?原因是stop()方法太过于暴力,会强行把执行一半的线程终止。这样会就不会保证线程的资源正确释放,通常是没有给与线程完成资源释放工作的机会,因此会导致程序工作在不确定的状态下。关于使用原创 2016-12-02 11:42:43 · 46047 阅读 · 8 评论 -
Java中线程的状态
1、关于Java线程状态的介绍 Java线程在运行的生命周期中可能处于下表所示的6种不同的状态,在给定的一个时刻,线程只能处于其中的一个状态。 2、Java线程状态的测试 下面我们使用jstack工具,尝试查看示例代码运行时的线程信息,更加深入地理解线程状态,示例如代码如下所示。package com.baowei.threads原创 2016-12-02 11:11:29 · 589 阅读 · 0 评论 -
从volatile说到,i++原子操作,线程安全问题
1、可见性(Visibility) 可见性是指,当一个线程修改了某一个全局共享变量的数值,其他线程是否能够知道这个修改。 显然,在串行程序来说可见性的问题是不存在的。因为你在任何一个地方操作修改了某个变量,那么在后续的程序里面,读取这个变量的数值,一定是修改后的数值。 但是,这个问题在并行程序里面就不见得了。在并行程序里面,如果一个线程修改了某原创 2016-12-01 14:57:29 · 17055 阅读 · 5 评论 -
Java主线程等待线程池所有任务完成--线程池的封装
用线程池编写多线程程序时,当所有任务完成时,要做一些统计的工作。而统计工作必须要在所有任务完成才能做。所以要让主线程等待所有任务完成。可以使用ThreadPoolExecutor.awaitTermination(long timeout, TimeUnit unit)。封装的线程池public interface BaseExecutor { /** * @Title: init原创 2017-06-14 17:07:31 · 4727 阅读 · 1 评论