JAVA
文章平均质量分 53
山中小僧
这个作者很懒,什么都没留下…
展开
-
(图文教程)java 使用JAX-WS框架发布Webservice以及客户端调用
作者:王勤为 转载一、发布WebService 1.工具:使用myeclipse,因为它自带了JWS的架包。2.创建Webservice工程 3.创建Webservice类 4.编译刚刚创建的类,使用命令:apt -d .. WS_PUB.java (下个版本移植到javadoc里面去,请参考帮助页) 使用完该命令之后会生成J原创 2014-10-14 14:24:00 · 1541 阅读 · 0 评论 -
Java中volatile的并发安全性分析
一、volatile的解释 当一个共享变量被volatile修饰时,它会保证修改的值会立即被更新到主存,当有其他线程需要读取时,它会去内存中读取新值。二、问题的发现 从volatile的定义上来看它看似应该能保证多个线程对volatile变量使用的同步,那么先来看一段代码。package com;public class Main { publi原创 2015-09-06 17:45:54 · 497 阅读 · 0 评论 -
Java线程同步中的wait()和notify()使用简单示例
一、简介 有时候并发编程中,并不只是保证数据的一致性和操作的原子性,还需要使各个任务按正确的顺序执行。在Java中提供了多种方法来实现同步。这里使用wait()和notify()来实现一个简单的双线程交替工作的同步场景。 wait()是Object的方法,使得当前线程释放该Object的锁,同时可以设置一个等待时间。notify()也是Object的方法,通知某个等待该原创 2015-09-09 10:41:23 · 509 阅读 · 0 评论 -
Java使用阻塞队列BlockingQueue实现线程同步
一、BlockingQueue简介 BlockingQueue是java.util.concurrent包提供的一个接口,经常被用于多线程编程中容纳任务队列。它提供了两个支持阻塞的方法: put(E e):尝试把元素e放入队列中,如果队列已满,则阻塞当前线程,直到队列有空位。 take():尝试从队列中取元素,如果没有元素,则阻塞当前线程,直到取到元原创 2015-09-09 16:16:06 · 1501 阅读 · 0 评论 -
Java 多线程中的任务分解机制-ForkJoinPool详解
一、任务分解问题和ForkJoinPool简介 在多线程并发编程中,有时候会遇到将大任务分解成小任务再并发执行的场景。Java 8新增的ForkJoinPool很好的支持了这个问题。 ForkJoinPool是一种支持任务分解的线程池,当提交给他的任务“过大”,他就会按照预先定义的规则将大任务分解成小任务,多线程并发执行。 一般要配合可分解任务接口Fo原创 2015-09-10 21:51:37 · 7351 阅读 · 0 评论 -
java FutureTask的简单用法示例
一、Java Future简介 Java Future是Java实现线程的第三种方式,前两种是继承Thread和实现Runnable接口。那么Java future有什么优点呢? (1)用它可以实现有返回值的线程 (2)它提供了一些良好的控制线程的方法:cancel,get等二、简单用法示例 (简单起见没有try catch)package原创 2015-09-03 18:59:07 · 597 阅读 · 0 评论 -
Java 中7种线程池详解+示例代码
一、线程池简介 周所周知,Java创建一个新线程的成本是比较高的。因此在面临大量的多线程任务时,采用线程池几乎成了惯用的做法,线程池其实也是设计模式中享元模式思想的一种应用。 一般线程池刚启动时会新建大量的(跟传入参数有关)空闲线程,程序将一个Runnable或者Callable对象传给线程池时,线程池会调用空闲线程执行他们的run()方法或者call()方法。执行完成后原创 2015-09-10 15:19:44 · 13651 阅读 · 0 评论 -
Java 线程的suspend()和stop()不安全的原因
一、suspend()不安全的原因 在Java中线程的suspend()方法用于悬挂起一个线程,但是它之前持有的锁却没有释放。那么其他等待该锁的线程就会一直等待,直到该线程被resume(),那么在这种情况下,有可能造成循环等待,进而死锁。因此Java已经不推荐使用该方法。二、stop()方法不安全的原因 在Java中线程的stop()方法用于停止一个线程原创 2015-09-03 19:37:43 · 981 阅读 · 0 评论 -
java.util.concurrent包中线程安全的集合简介
一、线程安全的集合 Java中有很多支持多线程并发的集合,比如Hashtable、Vector但是这些“古老”的并发集合效率并不高,一般只支持一个线程对其进行读写(加锁是针对整张表)。从Java 5开始 Java在java.util.concurrent包中提供了更多,效率更高的线程安全集合。下面用一张图片来显示这些集合的继承实现关系。 注:java也可以使用coll原创 2015-09-11 14:10:41 · 1913 阅读 · 0 评论 -
Java匿名内部类访问外部变量,为何需被标志为final?
对于Java语言中的final使用,大家应该很熟悉,可以修饰类,表示不可继承;可以修饰方法,表示不可被子类重写;可以修饰变量,表示不可以被二次赋值。那么,Java匿名内部类访问外部变量,为何需被标志为final?这跟上述三个特性有关系吗?一、问题的提出Java编程中,使用匿名内部类访问外部方法的局部变量是一件很常见的事件,比如以下代码,使用匿名内部类设置控件的监听器是再常见不过原创 2016-11-06 14:41:26 · 1453 阅读 · 0 评论 -
Java实现排序算法之归并排序
一、综述 归并排序(Merge sort,台湾译作:合并排序)是建立在归并操作上的一种有效的排序算法。该算法是采用分治法(Divide and Conquer)的一个非常典型的应用。 算法描述 归并操作的过程如下:申请空间,使其大小为两个已经排序序列之和,该空间用来存放合并后的序列设定两个指针,最初位置分别为两个已经排序序列的起始位置比较两个原创 2015-08-08 15:56:21 · 517 阅读 · 0 评论 -
Java下载网络上的图片
一、今天有学弟想让我展示一下Java怎么下载图片,于是简单写了一下,发现估计很多初学者也想知道,于是就发上来了二、代码,这里我随便选了百度上的一张图片,也许之后不存在了,所以请大家灵活替换URL地址。package com;import java.io.File;import java.io.FileOutputStream;import java.io.Inp原创 2015-08-31 18:48:45 · 488 阅读 · 0 评论 -
Dalvik虚拟机简要介绍和学习计划
我们知道,Android应用程序是运行在Dalvik虚拟机里面的,并且每一个应用程序对应有一个单独的Dalvik虚拟机实例。除了指令集和类文件格式不同,Dalvik虚拟机与Java虚拟机共享有差不多的特性,例如,它们都是解释执行,并且支持即时编译(JIT)、垃圾收集(GC)、Java本地方法调用(JNI)和Java远程调试协议(JDWP)等。本文对Dalvik虚拟机进行简要介绍,以及制定学习计划。转载 2015-07-10 14:37:13 · 454 阅读 · 0 评论 -
Java实现排序算法之堆排序
一、综述 堆排序是选择排序中的一种,算法复杂度是O(nlogn),最坏最好都是这个。下面用Java实现一个堆排序,并用注释的方式解释了堆排序的思想和原理。二、Java实现堆排序/** * @author 王勤为 * * 1.这是实现堆排序的类,所有的方法都是静态方法,这里实现的是大顶堆 * * 堆排序包含:建立堆,调整堆、堆排序、数组元素交换原创 2015-08-05 12:33:12 · 514 阅读 · 0 评论 -
Java实现排序算法之快速排序
一、综述 快速排序是交换排序中的一种,平均算法复杂度是O(nlogn),最坏O(n*n)。下面用Java实现一个快速排序,并用注释的方式解释了思想和原理。二、Java实现堆排序package com;/** * @author 王勤为 * * 这个是实现快速排序的类 * * 快速排序的基本思想是分治法:原创 2015-08-07 23:00:47 · 505 阅读 · 0 评论 -
Java实现数据结构之二叉查找树
一、综述 二叉查找树或者是一棵空树,或者是具有下列性质的二叉树: (1)若左子树不空,则左子树上所有结点的值均小于它的根结点的值; (2)若右子树不空,则右子树上所有结点的值均大于或等于它的根结点的值; (3)左、右子树也分别为二叉排序树; (4)没有键值相等的节点原创 2015-08-10 10:58:28 · 693 阅读 · 0 评论 -
Java统计二进制数中1的个数
一、问题描述 输入一个整数X,统计其二进制形式中1的个数。二、思路分析 粗略一看,似乎应该把X转化成二进制形式,然后遍历统计其中1的个数,但是这种方法首先转换二进制就很麻烦,然后还需要遍历统计。三、更巧妙的方法——利用位运算符&public int calculateNum(int x) { int countx = 0;原创 2015-08-10 17:11:19 · 1076 阅读 · 0 评论 -
Java强引用、 软引用、 弱引用、虚引用
1、对象的强、软、弱和虚引用 在JDK 1.2以前的版本中,若一个对象不被任何变量引用,那么程序就无法再使用这个对象。也就是说,只有对象处于可触及(reachable)状态,程序才能使用它。从JDK 1.2版本开始,把对象的引用分为4种级别,从而使程序能更加灵活地控制对象的生命周期。这4种级别由高到低依次为:强引用、软引用、弱引用和虚引用。图1为对象应用类层次1)强引用(St转载 2015-07-16 15:01:43 · 445 阅读 · 0 评论 -
Java IO体系中常用的流分类
原创 2015-08-31 15:35:14 · 458 阅读 · 0 评论 -
Java中接口和抽象类的区别你真的清楚吗?
一、引言 Java中抽象类和接口的区别你的真的全部知道吗?今天看见一片CSDN首页博文,感觉他总结的不是很好,于是自己亲自总结一下,结果发现很多意想不到的情况。那么先列一列总结出来的区别吧,这些你都知道吗?: (1)抽象类单继承、接口多实现 (2)接口的所有成员变量都必须是public ,抽象类抽象方法必须是public,其他随意原创 2015-09-15 10:06:28 · 492 阅读 · 1 评论