随笔 - 782  文章 - 0  评论 - 203  阅读 - 292万
05 2014 档案
Java多线程之notifyAll的作用域
摘要:notifyAll()因某个特定锁而被调用时,只有等待这个锁的任务才会被唤醒。 package Thread.Wait; import java.util.Timer; import java.util.TimerTask; import java.util.concurrent.ExecutorService; import java.util.concurrent.Executors; class Blocker { synchronized void waitingCall() { try { 阅读全文
posted @ 2014-05-29 00:13 上校 阅读(984) 评论(0) 推荐(0) 编辑
Java多线程之Wait()和Notify()
摘要:1.Wait()和Notify、NotifyAll都是Object的方法 2.多线程的协作是通过控制同一个对象的Wait()和Notify()完成 3.当调用Wait()方法时,当前线程进入阻塞状态,直到有另一线程调用了该对象的Notify()方法 package Thread.Wait; import java.util.concurrent.ExecutorService; import java.util.concurrent.Executors; import java.util.concurrent.TimeUnit; class Car { private boolean waxOn = false; 阅读全文
posted @ 2014-05-28 22:33 上校 阅读(819) 评论(0) 推荐(0) 编辑
Java多线程之线程结束清理
摘要:该事例说明了清理工作必须要放在finally块中 package Thread.Interrupting; import java.util.concurrent.TimeUnit; class NeedsCleanup { private final int id; public NeedsCleanup(int ident) { id = ident; System.out.println("NeedsCleanup " + id); } public void cleanup() { System.out.println("Cleaning up " + id); } } 阅读全文
posted @ 2014-05-28 00:10 上校 阅读(8622) 评论(0) 推荐(0) 编辑
Java多线程之阻塞I/O如何中断
摘要:阻塞的I/O线程不会被打断,需要关闭资源才能打断 package Thread.Interrupting; import java.io.IOException; import java.io.InputStream; import java.net.ServerSocket; import java.net.Socket; import java.util.concurrent.ExecutorService; import java.util.concurrent.Executors; import java.util.concurrent.TimeUnit; 阅读全文
posted @ 2014-05-27 23:08 上校 阅读(12091) 评论(1) 推荐(1) 编辑
Java多线程之线程中断
摘要:该例子说明,Sleep可以被中断,但是I/O和synchronized不能被中断。 package Thread.Interrupting; import java.io.IOException; import java.io.InputStream; import java.util.concurrent.ExecutorService; import java.util.concurrent.Executors; import java.util.concurrent.Future; import java.util.concurrent.TimeUnit; 阅读全文
posted @ 2014-05-27 22:14 上校 阅读(496) 评论(0) 推荐(0) 编辑
java多线程之计算数量
摘要:package Thread.Abort; import java.util.ArrayList; import java.util.List; import java.util.Random; import java.util.concurrent.ExecutorService; import java.util.concurrent.Executors; import java.util.concurrent.TimeUnit; //计数类 class Count {//DATA private int count = 0; private Random rand = new Random(47); // public synchronized int increment() { int temp = count; if (rand.nextBoolean()) Thread.yield(); return (count = ++te 阅读全文
posted @ 2014-05-27 20:50 上校 阅读(9133) 评论(0) 推荐(0) 编辑
深入研究java.lang.ThreadLocal类(转)
摘要:引用:http://lavasoft.blog.51cto.com/62575/51926/ 一、概述 ThreadLocal是什么呢?其实ThreadLocal并非是一个线程的本地实现版本,它并不是一个Thread,而是threadlocalvariable(线程局部变量)。也许把它命名为ThreadLocalVar更加合适。线程局部变量(ThreadLocal)其实的功用非常简单,就是为每一个使用该变量的线程都提供一个变量值的副本,是Java中一种较为特殊的线程绑定机制,是每一个线程都可以独立地改变自己的副本,而不会和其它线程的副本冲突。 从线程的角度看,每个线程都保持一个对其线程局部变量副本的隐式引用,只要线程是活动的并且 ThreadLocal 实例是可访问的;在线程消失之后,其线程局部实例的所有副本都会被垃圾回收(除非存在对这些副本的其他引用)。 阅读全文
posted @ 2014-05-27 00:27 上校 阅读(297) 评论(0) 推荐(1) 编辑
java多线程之ThreadLocal
摘要:ThreadLocal保证数据同步 package Thread.Common; import java.util.Random; import java.util.concurrent.ExecutorService; import java.util.concurrent.Executors; import java.util.concurrent.TimeUnit; class Accessor implements Runnable { private final int id; public Accessor(int idn) { id = idn; } 阅读全文
posted @ 2014-05-27 00:18 上校 阅读(673) 评论(0) 推荐(0) 编辑
java多线程之AtomicInteger
摘要:AtomicInteger原子操作实现同步 package Thread.Common; import java.util.Timer; import java.util.TimerTask; import java.util.concurrent.ExecutorService; import java.util.concurrent.Executors; import java.util.concurrent.atomic.AtomicInteger; 阅读全文
posted @ 2014-05-26 23:16 上校 阅读(6595) 评论(0) 推荐(0) 编辑
Java多线程之简单的线程同步实例
摘要:数据类: package Thread.MyCommon; public class Data { public int num = 0; public synchronized int getEven() { ++num; Thread.yield();//让另外线程先执行,加大测试效果几率 ++num; return num; } } 阅读全文
posted @ 2014-05-26 21:06 上校 阅读(8831) 评论(0) 推荐(0) 编辑
Java多线程之捕获异常
摘要:1.主线程不能捕获到子线程的异常 package Thread.Exection; import java.util.concurrent.ExecutorService; import java.util.concurrent.Executors; public class ExeceptionThread implements Runnable { @Override public void run() { throw new RuntimeException(); } 阅读全文
posted @ 2014-05-25 23:49 上校 阅读(13376) 评论(0) 推荐(0) 编辑
Java多线程之join
摘要:将另外一个线程join到当前线程,则需要等到join进来的线程执行完才会继续执行当前线程。 package Thread.join; class Sleeper extends Thread { private int duration; public Sleeper(String name, int sleepTime) { super(name); duration = sleepTime; start(); } 阅读全文
posted @ 2014-05-25 15:01 上校 阅读(6725) 评论(0) 推荐(0) 编辑
Java多线程之后台线程不执行finally
摘要:后台线程不执行finally package wzh.daemon; import java.util.concurrent.TimeUnit; class ADaemon implements Runnable { @Override public void run() { 阅读全文
posted @ 2014-05-25 13:42 上校 阅读(3196) 评论(0) 推荐(0) 编辑
Java多线程之DaemonThreadFactory
摘要:通过DaemonThreadFactory创建后台线程池 package wzh.daemon; import java.util.concurrent.ThreadFactory; public class DaemonThreadFactory implements ThreadFactory { @Override public Thread newThread(Runnable r) { Thread t = new Thread(r); t.setDaemon(true); return t; 阅读全文
posted @ 2014-05-25 13:26 上校 阅读(3186) 评论(0) 推荐(0) 编辑
Java多线程之后台线程
摘要:将线程设置成后台线程Daemons 主线程结果后,后台线程将自动结果。 package wzh.test; import java.util.concurrent.TimeUnit; class SimpleDaemons implements Runnable{ @Override public void run() { try { while (true) { 阅读全文
posted @ 2014-05-25 12:26 上校 阅读(1307) 评论(0) 推荐(0) 编辑
java多线程之从任务中获取返回值
摘要:package wzh.test; import java.util.ArrayList; import java.util.concurrent.Callable; import java.util.concurrent.ExecutorService; import java.util.concurrent.Executors; import java.util.concurrent.Future; class TaskWithResult implements Callable{ private int id; public TaskWithResult(int id){ this.id=id; } @Override public String call() throws Exception { return "result of TaskWithResult "+id; } } 阅读全文
posted @ 2014-05-25 10:46 上校 阅读(1898) 评论(0) 推荐(0) 编辑
java多线程总结
摘要:原文:http://www.cnblogs.com/rollenholt/archive/2011/08/28/2156357.html 在java中要想实现多线程,有两种手段,一种是继续Thread类,另外一种是实现Runable接口。 对于直接继承Thread的类来说,代码大致框架是: 阅读全文
posted @ 2014-05-25 09:46 上校 阅读(484) 评论(0) 推荐(1) 编辑
java之生产者与消费者
摘要:package com.produce; import java.util.LinkedList; import java.util.Queue; /*@author shijin * 生产者与消费者模型中,要保证以下几点: * 1 同一时间内只能有一个生产者生产 生产方法加锁sychronized * 2 同一时间内只能有一个消费者消费 消费方法加锁sychronized * 3 生产者生产的同时消费者不能消费 生产方法加锁sychronized * 4 消费者消费的同时生产者不能生产 消费方法加锁sychronized * 5 共享空间空时消费者不能继续消费 消费前循环判断是否为空,空的话将该线程wait,释放锁允许其他同步方法执行 * 6 共享空间满时生产者不能继续生产 生产前循环判断是否为满,满的话将该线程wait,释放锁允许其他同步方法执行 */ 阅读全文
posted @ 2014-05-24 23:35 上校 阅读(1656) 评论(0) 推荐(0) 编辑
java中的IO整理
摘要:写在前面:本文章基本覆盖了java IO的全部内容,java新IO没有涉及,因为我想和这个分开,以突出那个的重要性,新IO哪一篇文章还没有开始写,估计很快就能和大家见面。照旧,文章依旧以例子为主,因为讲解内容的java书很多了,我觉的学以致用才是真。代码是写出来的,不是看出来的。 最后欢迎大家提出意见和建议。 【案例1】创建一个新文件 ? 1 2 3 4 5 6 7 8 9 10 11 import java.io.*; class hello{ public static void main(String[] args) { File f=new File("D:\\hello.txt"); try{ f.createNewFile(); }catch (Exception e) { e.printStackTrace(); } } } 【运行结果】: 阅读全文
posted @ 2014-05-24 00:01 上校 阅读(593) 评论(0) 推荐(0) 编辑
JAVA集合小结
摘要:public class HashMap extends AbstractMap implements Map, Cloneable, Serializable public class TreeMap extends AbstractMap implements SortedMap, Cloneable, java.io.Serializable HashMap通过hashcode对其内容进行快速查找,而TreeMap中所有的元素都保持着某种固定的顺序,如果你需要得到一个有序的结果你就应该使用TreeMap(HashMap中元素的排列顺序是不固定的) 阅读全文
posted @ 2014-05-22 22:21 上校 阅读(1589) 评论(0) 推荐(0) 编辑
java内部类的作用分析
摘要:提起Java内部类(Inner Class)可能很多人不太熟悉,实际上类似的概念在C++里也有,那就是嵌套类(Nested Class),关于这两者的区别与联系,在下文中会有对比。内部类从表面上看,就是在类中又定义了一个类(下文会看到,内部类可以在很多地方定义),而实际上并没有那么简单,乍看上去内部类似乎有些多余,它的用处对于初学者来说可能并不是那么显著,但是随着对它的深入了解,你会发现Java的设计者在内部类身上的确是用心良苦。学会使用内部类,是掌握Java高级编程的一部分,它可以让你更优雅地设计你的程序结构。下面从以下几个方面来介绍: 阅读全文
posted @ 2014-05-22 20:41 上校 阅读(908) 评论(0) 推荐(0) 编辑
如何使用javadoc
摘要:package com.frank.chapter1; // object.Documentation1.java // TIJ4 Chapter Object, Exercise 13 - 1 /* Run Documentation1.java, Documentation2.java and Documentation3.java * through Javadoc. Verify the resulting documentation with your Web browser. */ /** A class comment */ public class Documentation1 { /** A field comment */ public int i; 阅读全文
posted @ 2014-05-21 23:13 上校 阅读(1907) 评论(0) 推荐(0) 编辑
30天轻松学习javaweb_Eclipse在修改了web.xml后将自动更新到tomcat服务器中
摘要:context.xml中增加WEB-INF/web.xml,Eclipse在修改了web.xml后将自动更新到tomcat服务器中。 WEB-INF/web.xml -- !-- Uncomment this to enable Comet connection tacking (provides events 阅读全文
posted @ 2014-05-21 00:41 上校 阅读(1546) 评论(0) 推荐(0) 编辑
30天轻松学习javaweb_修改tomcat的servlet模板
摘要:在MyEclipse目录下搜索com.genuitec.eclipse.wizards 得到搜索结果 com.genuitec.eclipse.wizards_9.0.0.me201108091322.jar 解压出文件夹,修改com.genuitec.eclipse.wizards_9.0.0.me201108091322\templates\Servlet.java 的模板文件 使用jar命令将文件夹打包成jar包: 1.在dos窗口中进入到解压后的com.genuitec.eclipse.wizards_9.0.0.me201108091322文件夹 2.执行打包命令: C:\Users\Victor\Desktop\com.genuitec.eclipse.wizards_9.0.0.me201108091322>jar cvf com.genuitec.eclipse.wizards_9.0.0.me201108091322.jar * 阅读全文
posted @ 2014-05-21 00:09 上校 阅读(269) 评论(0) 推荐(0) 编辑
30天轻松学习javaweb_通过javac编译java文件
摘要:通过javac编译java文件 1.先导入需要引用的包 D:\Program Files (x86)\apache-tomcat-7.0.53\webapps\test\WEB-INF\classes>set cla sspath=%classpath%;D:\Program Files (x86)\apache-tomcat-7.0.53\lib\servlet-api.j ar 2.将java文件按包名称编译到当前文件夹 D:\Program Files (x86)\apache-tomcat-7.0.53\webapps\test\WEB-INF\classes>javac - d . FirstServlet.java 阅读全文
posted @ 2014-05-20 20:41 上校 阅读(222) 评论(0) 推荐(0) 编辑
30天轻松学习javaweb_http头信息实例
摘要:package com.wzh.test.http; import java.io.ByteArrayOutputStream; import java.io.IOException; import java.io.InputStream; import java.io.OutputStream; import java.io.PrintWriter; import java.util.zip.GZIPOutputStream; import javax.servlet.ServletException; import javax.servlet.http.HttpServlet; 阅读全文
posted @ 2014-05-19 23:26 上校 阅读(270) 评论(0) 推荐(0) 编辑
30天轻松学习javaweb_通过telnet连接http服务器
摘要:telnet是windows自带的网络连接工具,可以用于连接任何服务器。 通过Telnet连接服务端 Telnet localhost 8080 GET /news/1.html HTTP/1.1 Host: 将获取到如下信息: HTTP/1.1 200 OK Server: Apache-Coyote/1.1 Accept-Ranges: bytes 阅读全文
posted @ 2014-05-19 21:02 上校 阅读(396) 评论(0) 推荐(0) 编辑
30天轻松学习javaweb_https协议的密码学
摘要:https通过非对称加密实现数据安全 1.CA机构提供数字证书,其中数字证书包含公钥。 2.浏览器自带功能验证数字证书是否是CA机构颁发的。 3.根据数字证书包含的公钥对表单数据进行加密。 4.公钥提供方再根据自己的私钥对数据进行解密。 阅读全文
posted @ 2014-05-19 00:40 上校 阅读(262) 评论(0) 推荐(0) 编辑
30天轻松学习javaweb_打包web项目成war
摘要:jar -cvf news.war news 打包成 war 包后复制到webapps下,Tomcat将会解压。 阅读全文
posted @ 2014-05-18 20:35 上校 阅读(227) 评论(0) 推荐(0) 编辑
30天轻松学习javaweb_tomcat的虚拟目录设置
摘要:1.在server.xml文件的前面加入。需要重新启动Tomcat才能生效。 如果是 将覆盖成缺省目录,则路径是 http://localhost:8080/1.html http://localhost:8080/ 下原来的Tomcat主页将被覆盖。 2.在conf\Catalina\localhost目录下放入 阅读全文
posted @ 2014-05-17 23:36 上校 阅读(265) 评论(0) 推荐(0) 编辑
如何查看端口号是否被占用
摘要:在网络程序的调试过程中,经常发生一些出乎意料的事情,比如创建一个TCP服务失败,这时候往往需要查看系统的网络情况,最常用的网络抓包当然非WireShark模式。但往往很多时候只需要查看某个端口的使用情况,它到底被那个进程(对应PID)占用了,或者你还需要把它Kill掉。如果你在Windows操作系统,你可以使用netstat命令来查询PID,然后可以打开任务管理器,查看这个PID对应的进程名;如果PID没有显示,菜单》查看》选择列》选中PID即可;得知进程后,我们可以将进程杀掉。下面我简单描述一下我所了解的在Windows和Linux系统下处理方式。(假如我们需要确定谁占用了我们的9010端口) 1、Windows平台 在windows控制台窗口下执行: netstat -nao | findstr "9010" TCP 127.0.0.1:9010 0.0.0.0:0 LISTENING 3017 阅读全文
posted @ 2014-05-17 10:24 上校 阅读(1976) 评论(0) 推荐(0) 编辑
JAVA坏境变量中的JAVA_HOME path classpath 的设置与作用。
摘要:以下为置JAVA_HOME,CLASSPATH,PATH的目的: 1,设置JAVA_HOME: 一、为了方便引用,比如,你JDK安装在C:\Program Files\Java\jdk1.6.0目录里,则设置JAVA_HOME为该目录路径, 那么以后你要使用这个路径的时候, 只需输入%JAVA_HOME%即可, 避免每次引用都输入很长的路径串; 二、归一原则, 当你JDK路径被迫改变的时候, 你仅需更改JAVA_HOME的变量值即可, 否则,你就要更改任何用绝对路径引用JDK目录的文档, 要是万一你没有改全, 某个程序找不到JDK, 后果是可想而知的----系统崩溃! 三、第三方软件会引用约定好的JAVA_HOME变量, 不然, 你将不能正常使用该软件, 以后用JAVA久了就会知道, 要是某个软件不能正常使用, 不妨想想是不是这个问题. 阅读全文
posted @ 2014-05-17 00:47 上校 阅读(310) 评论(0) 推荐(0) 编辑
30天轻松学习javaweb_模拟tomcat
摘要:运行 javac Server.java 编译java文件 执行 java Server 运行程序 在ie中输入 http://localhost:9999/ 打开模拟的服务程序 import java.net.*; import java.io.*; public class Server { public static void main(String args[]) throws Exception { System.out.println("start"); ServerSocket server = new ServerSocket(9999); 阅读全文
posted @ 2014-05-17 00:25 上校 阅读(488) 评论(0) 推荐(0) 编辑
jdk与jre的区别
摘要:很多程序员已经干了一段时间java了依然不明白jdk与jre的区别。 JDK就是Java Development Kit.简单的说JDK是面向开发人员使用的SDK,它提供了Java的开发环境和运行环境。SDK是Software Development Kit 一般指软件开发包,可以包括函数库、编译程序等。 JRE是Java Runtime Enviroment是指Java的运行环境,是面向Java程序的使用者,而不是开发者。 如果安装了JDK,会发同你的电脑有两套JRE,一套位于 \jre 另外一套位于 C:\Program Files\Java\jre1.5.0_15 目录下,后面这套比前面那套少了Server端的Java虚拟机,不过直接将前面那套的Server端Java虚拟机复制过来就行了。而且在安装JDK可以选择是否安装这个位于 C:\Program Files\Java 目录下的JRE。如果你只安装JRE,而不是JDK,那么只会在 C:\Program Files\Java 目录下安装唯一的一套JRE。 阅读全文
posted @ 2014-05-16 23:20 上校 阅读(234) 评论(0) 推荐(0) 编辑
30天轻松掌握JavaWeb_使用beanutils
摘要:导入commons-beanutils-1.8.3.jar及commons-logging-1.1.3.jar 使用commons-beanutils-1.8.3.jar包时需要同时使用commons-logging-1.1.3.jar包,因为需要写日志。 package com.wzh.test.beanutils; import java.lang.reflect.InvocationTargetException; import java.text.ParseException; import java.text.SimpleDateFormat; import java.util.Date; import java.util.HashMap; import java.util.Map; import org.apache.commons.beanutils.BeanUtils; import org.apache.commons.beanutils.ConversionException; import org.apache.commons 阅读全文
posted @ 2014-05-15 23:08 上校 阅读(594) 评论(0) 推荐(0) 编辑
如何搭建Struts2环境
摘要:1.解压下载到的struts-2.3.16压缩包。 2.将struts2-blank\WEB-INF\lib 下的jar包复制到Eclipse项目下的libs文件夹下。 3.struts-2.3.16\apps\struts2-blank\WEB-INF\classes目录下的struts.xml文件复制到Eclipse项目下的Src文件夹下。 4.打开struts-2.3.16\apps\struts2-blank\WEB-INF目录下的web.xml文件,将 阅读全文
posted @ 2014-05-11 15:20 上校 阅读(431) 评论(0) 推荐(0) 编辑
Eclipse Tomcat配置/管理/调试指南
摘要:从myeclipse转到Eclipse最不方便的之一莫过于Web项目部署了,老是在想怎么不能把myeclipse的那个移植过来,或者有没有高人能按照Myeclipse开发一个,非常遗憾。 原版的Eclipse自带WTP,WTP本身的Web应用服务器管理功能还可以,但有些复杂。 要想把它用顺手,还要花点时间来学习一下。学会后还算方便的。 目前还未找到十分好用的Eclipse下的管理Tomcat的插件。 有一个老处于插件TomcatPlugin V321,只能管理一个Tomcat,数量 阅读全文
posted @ 2014-05-02 08:04 上校 阅读(7219) 评论(0) 推荐(0) 编辑
eclipse中安装tomcat插件
摘要:一、软件下载 Eclipse3.6 IDE for Java EE Developers: 下载地址:http://eclipse.org/downloads/ Tomcat Eclipse Plugin, 下载地址:http://www.eclipsetotale.com/tomcatPlugin.html 二、软件安装和配置(图文) 1.解压Eclipse到某个目录,例如/usr/local/eclipse 即可。 2. 解压Tomcat 插件到eclipse目录下的plugins目录中。 阅读全文
posted @ 2014-05-01 20:53 上校 阅读(2393) 评论(0) 推荐(0) 编辑

< 2025年3月 >
23 24 25 26 27 28 1
2 3 4 5 6 7 8
9 10 11 12 13 14 15
16 17 18 19 20 21 22
23 24 25 26 27 28 29
30 31 1 2 3 4 5

点击右上角即可分享
微信分享提示