JAVA SE
zhanghongbin01
爱生活,爱技术,爱学习,这就是我!欢迎大家和我做朋友哦!
我的博客:https://xlwh.github.io/
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
定义多线程任务
线程可以驱动任务,因此,我们需要一种描述任务的方式,我们定义多线程任务有两种方式可以实现,一种是继承Thread类,重写run方法,如下所示,我们使用这种方法定义了一个多线程的计数器。package thread;public class ThreadCreate extends Thread{ private static int count=0; private int t原创 2015-03-16 08:20:23 · 504 阅读 · 0 评论 -
Ant之build.xml详解
关键字: ant build.xml Ant的概念 可能有些读者并不连接什么是Ant以及入可使用它,但只要使用通过Linux系统得读者,应该知道make这个命令。当编译Linux内核及一些软件的源程序时,经常要用这个命令。Make命令其实就是一个项目管理工具,而Ant所实现功能与此类似。像make,gnumake和nmake这些编译工具都有一定的缺陷,但是Ant却克服了这些工具的缺陷。最初An原创 2015-12-27 23:26:33 · 371 阅读 · 0 评论 -
JAVA对象序列化
package object;import java.io.FileInputStream;import java.io.FileOutputStream;import java.io.IOException;import java.io.ObjectInputStream;import java.io.ObjectOutputStream;public class ToStream {原创 2015-03-18 13:07:02 · 495 阅读 · 0 评论 -
JAVA线程终止方式的思考
在java的线程中提供了stop这个方法来终止线程的执行,但是使用这种方式来终止线程的执行时非常危险的,这样子会破坏线程执行的原子性,导致数据丢失或者其他什么更为严重的问题。所以,在java的规范中不建议使用这种方法来终止线程的执行。那么,既然这种方法是不建议使用的,而我们在实际的项目开发过程中是需要对线程进行中断的,那我们该怎么办呢? 解决的方式就是采用一个标志位的方法来控制,线原创 2015-03-23 09:09:15 · 794 阅读 · 0 评论 -
JAVA泛型
介绍下面是那种典型用法:List myIntList = new ArrayList();// 1myIntList.add(new Integer(0));// 2Integer x = (Integer) myIntList.iterator().next();// 3第 3 行的类型转换有些烦人。通常情况下,程序员知道一个特定的 list 里边放的是什么类型的数据。但是,这个类型转换是必原创 2015-03-22 15:14:30 · 613 阅读 · 0 评论 -
volatile有什么作用
在使用java编写程序的过程中,有的时候为了提高程序运行的效率,编译器会自动进行优化,把那些经常需要访问的变量缓存起来,在使用的时候,编译器会先去检查缓存中是不是有这个变量,如果有的话,直接从缓存中读取。而对于并发的多线程程序中,当多个线程访问一个变量的时候,变量的值因为多线程的访问而发生改变了,而没有来得及把新的值放入缓存中,这样就会造成数据的不一致的问题。 volatitle是一个类型修饰符,原创 2015-03-17 21:24:02 · 600 阅读 · 0 评论 -
java入口函数为什么是public static void main(String args[])
相信大家在初学java的时候,接触的第一个方法(函数)应该就是这个主函数,可是大家有没有认真思考过,java语言的设计者为什么要设计得如此复杂,直接像c语言那样来一个main()不就完了吗,这样多简答明了。 其实这样设计是有目的的。我们都知道,JAVA是一门面向对象的语言,对方法的调用一般都是只能以对象实例去调用的(除了静态方法以外),而对于主方法而言,是要提供个java虚拟机去自动调用的,当类加原创 2015-03-17 20:32:44 · 2454 阅读 · 0 评论 -
如何实现在main()方法执行前输出"Hello World"?
我们都知道,在java语言中,程序都是先从主方法main入口,那么,我们该如何来在main()方法之前就输出hello呢? 对于熟悉java类初始化过程的人,应该很容易知道,静态代码块会在类加载的过程中就会被调用,所以,我们就可以使用这种方式来实现啦。废话不多说在,直接上代码:public class Main { static{ System.out.println("h原创 2015-03-17 20:42:01 · 1502 阅读 · 0 评论 -
JAVA程序初始化的过程
要了解java程序初始化过程,我们首先来看一段程序吧:public class ClassInit { static { System.out.println("父类静态代码块"); } { System.out.println("父类非静态代码块"); } public ClassInit() { System.o原创 2015-03-17 20:58:04 · 1552 阅读 · 0 评论 -
深入理解JAVA虚拟机
一、垃圾收集Java虚拟机的堆里存放着正在运行的java程序所创建的所有对象。当一个对象不再被程序引用时,它所使用的堆空间可以被回收,以便后续的新对象所使用。垃圾收集器必须能够断定哪些对象是不再被引用的,并且能够把它们所占据的堆空间释放出来。在释放不再被引用的对象的过程中,垃圾收集器运行将要被释放的对象的终结方法(finalizer)。除了释放不再被引用的对象,垃圾收集器还要处理堆原创 2015-03-16 15:06:35 · 590 阅读 · 0 评论 -
Android网络工具
在android开发中,我们常常需要连接到远程的服务器进行数据的读取,常用的是Http协议从服务器读取信息。以下代码是我在开发Android项目的时候写的一个连接工具,封装了get和post两种请求数据的方式。package com.zhang.net;import java.io.BufferedReader;import java.io.IOException;import jav原创 2015-03-16 22:09:01 · 608 阅读 · 0 评论 -
HashMap源码阅读
1.HashMap空间申请Hash默认的初始化空间大小为16字节,最大的空间大小为1073741824字节。HashMap在构造方法中对空间的容量进行初始化。代码如下:public HashMap(int initialCapacity, float loadFactor) { if (initialCapacity < 0) throw new I原创 2015-03-16 10:07:53 · 484 阅读 · 0 评论 -
NIO使用方法
NIO进行服务端开发的一般步骤:创建一个ServerSocketChannel,并配置它为非阻塞模式;绑定监听,配置相关的TCP参数,比如backlog大小;创建一个独立的I/O进程,用于轮询多路复用器Selector创建Selector,将之前创建的ServerSocketChannel注册到Selector上,监听SelectionKey.ACCEPT事件启动I/O线程,在一个循环体中原创 2017-03-03 09:32:31 · 649 阅读 · 0 评论
分享