
线程/jvm
文章平均质量分 54
phantomes
这个作者很懒,什么都没留下…
展开
-
多线程实现大批量数据导入
【简述】 最近在做大批量数据导入问题,当数据量很大的时候(例如:20万条),程序在执行的时候,需要花很长的时间,为了提高程序的执行效率,现采用多线程的方法实现数据导入功能,具体实现如下:【实现】 package com.mypack.thread; public class Student { pri原创 2013-04-22 16:10:42 · 4147 阅读 · 0 评论 -
Java并发教程(Oracle官方资料)
http://www.iteye.com/magazines/131转载 2014-05-07 10:09:23 · 576 阅读 · 0 评论 -
多线程获取yahoo股票信息
首先给到需要获取和计算的股票,存入一个文本中,如stocks.txt01AAPL,250502AMGN,340603AMZN,935404BAC,983905BMY,5099原创 2014-05-07 10:10:05 · 980 阅读 · 0 评论 -
java web开发 高并发处理
java处理高并发高负载类网站中数据库的设计方法(java教程,java处理大量数据,java高负载数据)一:高并发高负载类网站关注点之数据库没错,首先是数据库,这是大多数应用所面临的首个SPOF。尤其是Web2.0的应用,数据库的响应是首先要解决的。一般来说MySQL是最常用的,可能最初是一个mysql主机,当数据增加到100万以上,那么,MySQL的效能急剧下降。常用的优化转载 2014-10-28 09:58:47 · 665 阅读 · 0 评论 -
java终结处理和垃圾回收
java中的对象,并非总是被垃圾回收,换句话说,1.对象可能不被垃圾回收2.垃圾回收并不等于c++中的析构函数3.垃圾回收只与内存相关。java中的finalize()方法需要一种特殊情况,即通过某种创建对象方式以外的方式为对象分配了存贮空间。之所以这样,是由于在分配空间时,可能采用了类似c语音的做法,而不是java的通常做法,这种情况主要发生在使用“本地方法”的情况下,本地方法,原创 2015-05-20 21:39:31 · 783 阅读 · 0 评论 -
JVM的内部组成
JVM内部结构组成JVM:Java虚拟机(Java VirtualMachine 简称JVM)是运行所有Java程序的抽象计算机,是Java语言的运行环境,它是Java 最具吸引力的特性之一。 JVM的内部结构: JVM各部分简介:1.类装载器子系统:负责查找并装载Class 文件到内存,最终形成可以被虚拟机直接使用的Java类型。2.方法区:在类装转载 2015-05-11 23:15:25 · 506 阅读 · 0 评论 -
多线程情况下建议使用while而不是if
在看java核心技术讲到多线程中用条件对象,说到通常对await的调用应该在while(!(ok to proceed)){condition.await();}在代码中实验了下,在调用await()之前打印一下"thread will wait",发现用while时会打印大量的"thread will wait",而if时会少很多。这样是不是表示while和if的机制会不一样。想知原创 2015-06-25 10:02:44 · 5328 阅读 · 3 评论 -
Java多个线程之间处理共享数据的方式
题目要求:有4个线程,其中两个线程每次对x加1,另外两个每次对x减1,如何实现?分析:x就是这4个线程要处理的共享数据,不同种线程有不同的处理方式,但操作的数据是共同的,联想到“窗口买票问题”,但是卖票只是单纯的减。所以,多个线程访问共享对象或数据的方式,先看,如果每个线程执行的代码相同,那么就可以使用同一个Runnable对象,这个对象中有被共享的数据,如买票问题。如果每个线转载 2015-06-25 09:38:48 · 1397 阅读 · 0 评论 -
StrongReference、SoftReference、WeakReference、PhantomReference
本文介绍对象的强、软、弱和虚引用的概念、应用及其在UML中的表示。1.对象的强、软、弱和虚引用 在JDK 1.2以前的版本中,若一个对象不被任何变量引用,那么程序就无法再使用这个对象。也就是说,只有对象处于可触及(reachable)状态,程序才能使用它。从JDK 1.2版本开始,把对象的引用分为4种级别,从而使程序能更加灵活地控制对象的生命周期。这4种级别由高到低依次为:强引用、软引转载 2015-06-09 09:43:58 · 415 阅读 · 0 评论 -
Java 内存区域和GC机制
原文地址:http://www.cnblogs.com/hnrainll/archive/2013/11/06/3410042.htmlJava垃圾回收概况 Java GC(Garbage Collection,垃圾收集,垃圾回收)机制,是Java与C++/C的主要区别之一,作为Java开发者,一般不需要专门编写内存回收和垃圾清理代 码,对内存泄露和溢出的问题,也不转载 2015-07-01 17:26:12 · 457 阅读 · 0 评论 -
多线程处理一个list的集合
import java.util.ArrayList; import java.util.List; import java.util.concurrent.Callable; import java.util.concurrent.ExecutorService; import java.util.concurrent.Executors;转载 2015-05-13 10:26:12 · 6144 阅读 · 0 评论 -
CountDownLatch使用
CountDownLatch1、类介绍一个同步辅助类,在完成一组正在其他线程中执行的操作之前,它允许一个或多个线程一直等待。用给定的计数 初始化 CountDownLatch。由于调用了 countDown() 方法,所以在当前计数到达零之前,await 方法会一直受阻塞。之后,会释放所有等待的线程,await 的所有后续调用都将立即返回。这种现象只出现一次——计数无法被重转载 2016-02-21 20:50:08 · 467 阅读 · 0 评论 -
服务系能查看-通过gc和cpu定位代码问题
-----------------------------------------------cpu占用高----------------------------------------------------------------0.查看当前资源占用情况a) top 看一下当前内存和cpu情况b) top -H -P (进程号) 看一下占用最高的进程,会显示进程号中,每个线程的cp原创 2016-07-20 13:38:34 · 1072 阅读 · 0 评论 -
【Java线程】锁机制:synchronized、Lock、Condition
原文地址:http://blog.youkuaiyun.com/vking_wang/article/details/99520631、synchronized把代码块声明为 synchronized,有两个重要后果,通常是指该代码具有 原子性(atomicity)和 可见性(visibility)。1.1 原子性原子性意味着个时刻,只有一个线程能够执行一段代码,这转载 2016-12-27 10:19:21 · 439 阅读 · 0 评论 -
Apache Commons 工具类介绍及简单使用
原文地址:http://www.cnblogs.com/younggun/p/3247261.htmlApache Commons包含了很多开源的工具,用于解决平时编程经常会遇到的问题,减少重复劳动。下面是我这几年做开发过程中自己用过的工具类做简单介绍。 组件功能介绍BeanUtils提供了对于JavaBean进行各种转载 2017-01-09 21:06:15 · 732 阅读 · 0 评论 -
Disruptor 极速体验
原文地址:http://www.cnblogs.com/haiq/p/4112689.html已经不记得最早接触到 Disruptor 是什么时候了,只记得发现它的时候它是以具有闪电般的速度被介绍的。于是在脑子里, Disruptor 和“闪电”一词关联了起来,然而却一直没有时间去探究一下。 最近正在进行一项对性能有很高要求的产品项目的研究,自然想转载 2017-03-17 18:09:28 · 741 阅读 · 0 评论 -
多线程IO操作(fork-join版)
接着上篇中没写完的(http://my.oschina.net/bluesroot/blog/223453),上篇中讲到很多,为完成对一个目录的扫描的频繁的IO操作,我们从单线程到多线程,从CountDownLatch到BlockingQueue,中间不免各种Callable和Future和ExecutorService等等,虽然纷繁,中间有些不免麻烦,但是最终仍紧紧贴着我们的需求和多线程操作这一原创 2014-05-07 10:07:13 · 2198 阅读 · 0 评论 -
多线程IO操作(扫描文件夹并计算总大小)
场景为,给到一个硬盘上文件或文件夹,(当然文件夹时,多线程的优势才能越发体现出来),得到该文件或文件夹的大小和计算该结果所需要的时间。 首先是单线程下的例子,这个可难不倒大家,代码如下:01public class TotalFileSizeSequential {02 priv原创 2014-05-07 10:08:29 · 2030 阅读 · 0 评论 -
4线程两加两减
package com.thread;/** * 设计4个线程,其中两个线程对j加1,另外两个对j减1 * * */public class ThreadTest2 { //外部内成员变量j,共享于两个内部类 private int j; public static void main(String[] args) { /** * 外部类使用内部类实例时,需原创 2013-04-23 10:24:29 · 1154 阅读 · 0 评论 -
两个线程循环切换
package com.thread;/** * 创建两个线程,一个线程循环10次,另一个线程100次,两者交替运行50次 * 即到A线程时,它运行本身循环的10次之后;马上轮到B线程,它则运行本身的100次循环 * 以此轮换切换线程共50次 */public class ThreadTest { public static void main(String[] args) {原创 2013-04-22 16:14:53 · 1229 阅读 · 0 评论 -
三个线程循环切换
package com.thread;import java.util.concurrent.locks.Condition;import java.util.concurrent.locks.Lock;import java.util.concurrent.locks.ReentrantLock;public class ThreadTest3 { public static vo原创 2013-04-23 15:45:00 · 1150 阅读 · 0 评论 -
读写锁实现模拟缓存池
class CachedData { Object data; volatile boolean cacheValid; ReentrantReadWriteLock rwl = new ReentrantReadWriteLock(); void processCachedData() { rwl.readLock().lock(); if (!ca原创 2013-04-23 14:26:41 · 1088 阅读 · 0 评论 -
多线程阻塞队列缓冲池
class BoundedBuffer { final Lock lock = new ReentrantLock(); final Condition notFull = lock.newCondition(); final Condition notEmpty = lock.newCondition(); final Object[] items = new O原创 2013-04-23 15:02:43 · 1195 阅读 · 0 评论 -
Thread和Runnable你该选哪个
使用多线程时,大家大抵都有过疑惑,到底是继承Thread呢,还是实现Runnable接口,我也有过这样的疑惑,于是便上网搜了下,这边就记下我自己的见解,欢迎指正批评。 一般使用中,很多有经验的老程序员大部分都是不约而同的使用Runnable多一些,为什么呢,我也问过公司的那些老员工,他们也说不出个所以然,只是使用经验让他们去这样选择,这里我去查看Threa原创 2013-04-25 10:05:32 · 2543 阅读 · 2 评论 -
java中关键字volatile的作用 编辑
用在多线程,同步变量。 线程为了提高效率,将某成员变量(如A)拷贝了一份(如B),线程中对A的访问其实访问的是B。只在某些动作时才进行A和B的同步。因此存在A和B不一致 的情况。volatile就是用来避免这种情况的。volatile告诉jvm, 它所修饰的变量不保留拷贝,直接访问主内存中的(也就是上面说的A)=========================分割线1=========转载 2013-04-26 09:22:24 · 728 阅读 · 0 评论 -
java中queue的使用
Queue接口与List、Set同一级别,都是继承了Collection接口。LinkedList实现了Queue接 口。Queue接口窄化了对LinkedList的方法的访问权限(即在方法中的参数类型如果是Queue时,就完全只能访问Queue接口所定义的方法 了,而不能直接访问 LinkedList的非Queue的方法),以使得只有恰当的方法才可以使用。BlockingQueue 继承了Q原创 2013-07-23 10:48:26 · 930 阅读 · 0 评论 -
Java四种线程池的使用
Java通过Executors提供四种线程池,分别为:newCachedThreadPool创建一个可缓存线程池,如果线程池长度超过处理需要,可灵活回收空闲线程,若无可回收,则新建线程。newFixedThreadPool 创建一个定长线程池,可控制线程最大并发数,超出的线程会在队列中等待。newScheduledThreadPool 创建一个定长线程池,支持定时及周期性任务执行。转载 2014-02-20 17:57:14 · 717 阅读 · 0 评论 -
Java多线程总结之聊一聊Queue
上个星期总结了一下synchronized相关的知识,这次将Queue相关的知识总结一下,和朋友们分享。在Java多线程应用中,队列的使用率很高,多数生产消费模型的首选数据结构就是队列。Java提供的线程安全的Queue可以分为阻塞队列和非阻塞队列,其中阻塞队列的典型例子是BlockingQueue,非阻塞队列的典型例子是ConcurrentLinkedQueue,在实际应用中要根据实际需要选转载 2014-02-25 20:04:20 · 711 阅读 · 0 评论 -
Java多线程--BlockingQueue
认识BlockingQueue阻塞队列,顾名思义,首先它是一个队列,而一个队列在数据结构中所起的作用大致如下图所示:从上图我们可以很清楚看到,通过一个共享的队列,可以使得数据由队列的一端输入,从另外一端输出;常用的队列主要有以下两种:(当然通过不同的实现方式,还可以延伸出很多不同类型的队列,DelayQueue就是其中的一种) 先进先出(FIFO):先插入的队列的元素也最先出转载 2014-02-25 19:25:51 · 622 阅读 · 0 评论 -
java多线程与并发之java并发编程实践
并发集合(二)----------Queue介绍1.java.util.Queuepublic interface Queueextends Collection略2.java.util.concurrent.BlockingQueuepublic interface BlockingQueueextends Queue支持两个附加操作的Queue,这两个操转载 2014-02-25 19:28:59 · 756 阅读 · 0 评论 -
多线程基础总结 之 -- ConcurrentLinkedQueue
ConcurrentLinkedQueue充分使用了atomic包的实现打造了一个无锁得并发线程安全的队列。对比锁机制的实现,个人认为使用无锁机 制的难点在于要充分考虑线程间的协调。简单的说就是多个线程对内部数据结构进行访问时,如果其中一个线程执行的中途因为一些原因出现故障,其他的线程能够 检测并帮助完成剩下的操作。这就需要把对数据结构的操作过程精细的划分成多个状态或阶段,考虑每个阶段或状态多线程转载 2014-02-25 20:03:31 · 1159 阅读 · 0 评论 -
java 实现数据结构之队列
队列是一种特殊的线性表,它只允许在表的前端(front)进行删除操作,只允许在表的后端(rear)进行插入操作。1.队列的顺序存储结构及实现Java代码 public class SequenceQueue { private int DEFAULT_SIZE = 10; //保存数组的长度。 private int capacity;转载 2014-02-25 20:07:46 · 752 阅读 · 0 评论 -
synchronized和volatile笔记
1.无状态对象,是线程安全的。比如,无状态的servlet(它不包含域,也不引用其他的域。)一次特定计算的瞬时状态,会唯一存在本地变量中,这些本地变量存在线程的栈中,只有执行线程才能访问。所以,当多线程访问某个无状态的servlet的时候,线程之间是非共享状态,是单独的各自的实例,所以无状态对象是线程安全的。(无状态对象,永远是线程安全的)。代码如:@ThreadSafepublic c原创 2014-03-28 10:58:47 · 741 阅读 · 0 评论 -
jvm调优--查找最耗CPU的代码
jvm调优--查找最耗CPU的代码1.场景今天在公司用mvn编译的时候,出现机器卡死的情况,让我深深的反省了一下。[java] view plain copy../apache-maven-3.0.5/bin/mvn -Dhadoop.version=0.20.2-cdh3u5 -DskipTests clean package转载 2017-05-03 10:13:10 · 1006 阅读 · 0 评论