java中ReentrantReadWriteLock读写锁的使用

     Lock比传统线程模型中的synchronized方式更加面向对象,与生活中的锁类似,锁本身也应该是一个对象。两个线程执行的代码片段要实现同步互斥的效果,它们必须用同一个Lock对象。   读写锁:分为读锁和写锁,多个读锁不互斥,读锁与写锁互斥,这是由jvm自己控制的,你只要上好相应的...

2018-08-10 16:57:12

阅读数:26

评论数:0

使用java jstack查看程序线程阻塞点方便调试性能

首先查看java进程的Pid ,   输入 pgrep java假设java的pid为5066 则将线程信息保存到5066.dump文件中,输入  jstack -F 5066 >5066.dump

2018-05-31 19:32:51

阅读数:180

评论数:0

ThreadPoolExecutor的拒绝策略RejectedExecutionHandler

概述原文地址 http://blog.csdn.net/qq_25806863/article/details/71172823在分析ThreadPoolExecutor的构造参数时,有一个RejectedExecutionHandler参数。RejectedExecutionHandler是一个...

2018-05-30 15:40:51

阅读数:209

评论数:0

Java并发编程:CountDownLatch、CyclicBarrier和Semaphore

Java并发编程:CountDownLatch、CyclicBarrier和Semaphore   在java 1.5中,提供了一些非常有用的辅助类来帮助我们进行并发编程,比如CountDownLatch,CyclicBarrier和Semaphore,今天我们就来学习一下这三个辅助类的用法。 ...

2018-01-11 12:15:44

阅读数:83

评论数:0

线程栈模型与线程的变量

要理解线程调度的原理,以及线程执行过程,必须理解线程栈模型。 线程栈是指某时刻时内存中线程调度的栈信息,当前调用的方法总是位于栈顶。线程栈的内容是随着程序的运行动态变化的,因此研究线程栈必须选择一个运行的时刻(实际上指代码运行到什么地方)。 下面通过一个示例性的代码说明线程(调用)栈的变...

2017-11-13 16:47:10

阅读数:125

评论数:0

Java并发编程:深入剖析ThreadLocal

想必很多朋友对ThreadLocal并不陌生,今天我们就来一起探讨下ThreadLocal的使用方法和实现原理。首先,本文先谈一下对ThreadLocal的理解,然后根据ThreadLocal类的源码分析了其实现原理和使用需要注意的地方,最后给出了两个应用场景。 以下是本文目录大纲: 一.对T...

2017-07-25 14:11:08

阅读数:118

评论数:0

Java并发编程:Lock

在上一篇文章中我们讲到了如何使用关键字synchronized来实现同步访问。本文我们继续来探讨这个问题,从Java 5之后,在java.util.concurrent.locks包下提供了另外一种方式来实现同步访问,那就是Lock。 也许有朋友会问,既然都可以通过synchronized来实现...

2017-07-19 16:50:44

阅读数:79

评论数:0

java的锁机制

一段synchronized的代码被一个线程执行之前,他要先拿到执行这段代码的权限,在Java里边就是拿到某个同步对象的锁(一个对象只有一把锁); 如果这个时候同步对象的锁被其他线程拿走了,他(这个线程)就只能等了(线程阻塞在锁池等待队列中)。 取到锁后,他就开始执行同步代码(被synchroni...

2017-07-05 10:04:43

阅读数:95

评论数:0

Java中对象锁和类锁举例

Java的锁分为对象锁和类锁。   1. 当两个并发线程访问同一个对象object中的这个synchronized(this)同步代码块时,一个时间内针对该对象的操作只能有一个线程得到执行。另一个线程必须等待当前线程执行完这个代码块以后才能执行该代码块。   2. 然而,另一个线程仍然可以访问...

2017-07-05 09:37:12

阅读数:163

评论数:0

java中,如何安全的结束一个正在运行的线程?

如何等待一个线程结束。那么如果不希望等待线程结束,而是根据问题的需要随时都要中断线程使其结束,这种对线程的控制方法该如何实现呢?   解决思路   首先必须先明确“中断”这个概念的实际含义,这里的中断是指一个线程在其任务完成之前被强行停止,提前消亡的过程。查阅JDK的帮助文档,可以找到这样一个...

2016-08-03 13:54:19

阅读数:2939

评论数:0

多线程之UDP实例

package Socket; import java.net.DatagramPacket; import java.net.InetAddress; public class Dgram { public static DatagramPacket toDatagram(Stri...

2016-08-02 14:03:52

阅读数:211

评论数:0

线程间通信方式(wait和notify的使用)

线程间的相互作用   线程间的相互作用:线程之间需要一些协调通信,来共同完成一件任务。   Object类中相关的方法有两个notify方法和三个wait方法:   http://docs.oracle.com/javase/7/docs/api/java/lang/Object.html ...

2016-07-19 10:43:03

阅读数:196

评论数:0

Java四种线程池的使用

Java通过Executors提供四种线程池,分别为: newCachedThreadPool创建一个可缓存线程池,如果线程池长度超过处理需要,可灵活回收空闲线程,若无可回收,则新建线程。 newFixedThreadPool 创建一个定长线程池,可控制线程最大并发数,超出的线程会在队列中等待。 ...

2016-07-19 10:05:31

阅读数:144

评论数:0

Java多线程之-----实现自己的ThreadFactory

实现ThreadFactory接口生成自定义的线程 在面向对象编程的世界中,工厂模式(factory pattern)是一个被广泛使用的设计模式。它是一个创建模式,它的目的是开发一个类,这个类的使命是创建一个或多个类的对象。然后,当我们要创建一个类的一个对象时,我们使用这个工厂而不是使用new操...

2016-05-06 18:58:57

阅读数:228

评论数:0

Java:使用Executors创建和管理线程

1. 类 Executors 此类中提供的一些方法有: 1.1 publicstatic ExecutorService newCachedThreadPool() 创建一个可根据需要创建新线程的线程池,但是在以前构造的线程可用时将重用它们。对于执行很多短期异步任务的程序而言,这些线程池通常...

2016-05-06 13:46:50

阅读数:137

评论数:0

java中BlockingQueue 的使用

import Java.util.concurrent.ArrayBlockingQueue; import java.util.concurrent.BlockingQueue; import java.util.concurrent.ExecutorService; import ...

2016-05-06 13:33:18

阅读数:176

评论数:0

Java并发编程:阻塞队列

Java并发编程:阻塞队列   在前面几篇文章中,我们讨论了同步容器(Hashtable、Vector),也讨论了并发容器(ConcurrentHashMap、CopyOnWriteArrayList),这些工具都为我们编写多线程程序提供了很大的方便。今天我们来讨论另外一类容器:阻塞队列。  ...

2016-03-24 15:31:14

阅读数:196

评论数:0

Java并发编程:Callable、Future和FutureTask

Java并发编程:Callable、Future和FutureTask   在前面的文章中我们讲述了创建线程的2种方式,一种是直接继承Thread,另外一种就是实现Runnable接口。   这2种方式都有一个缺陷就是:在执行完任务之后无法获取执行结果。   如果需要获取执行结果,就必须通过...

2016-03-24 15:20:36

阅读数:131

评论数:0

ExecutorService中submit和execute的区别

在Java5之后,并发线程这块发生了根本的变化,最重要的莫过于新的启动、调度、管理线程的一大堆API了。在Java5以后,通过Executor来启动线程比用Thread的start()更好。在新特征中,可以很容易控制线程的启动、执行和关闭过程,还可以很容易使用线程池的特性。   一、创建任务 ...

2016-03-24 15:10:30

阅读数:292

评论数:0

ThreadPoolExecutor

java.util.concurrent 类  ThreadPoolExecutor java.lang.Object   继承者 java.util.concurrent.AbstractExecutorService       继承者 java.util.concurrent....

2016-03-24 12:49:19

阅读数:166

评论数:0

提示
确定要删除当前文章?
取消 删除
关闭
关闭