线程较为深的度剖析1
摘要:为了探索同步的特性做了些实验:package com.wjy.synchronize;public class MyThread implements Runnable{ @Override public void run() { // TODO Auto-generated method stub synchronized (this) { for(int i=0;i<10;i++){ try { Thread.sleep(1000); ...
阅读全文
线程同步的故事描述
摘要:最近看了一个描述同步的很好比喻,分享一下:打个比方:一个object就像一个大房子,大门永远打开。房子里有 很多房间(也就是方法)。这些房间有上锁的(synchronized方法), 和不上锁之分(普通方法)。房门口放着一把钥匙(key),这把钥匙可以打开所有上锁的房间。另外我把所有想调用该对象方法的线程比喻成想进入这房子某个 房间的人。所有的东西就这么多了,下面我们看看这些东西之间如何作用的。在此我们先来明确一下我们的前提条件。该对象至少有一个synchronized方法,否则这个key还有啥意义。当然也就不会有我们的这个主题了。一个人想进入某间上了锁的房间,他来到房子门口,看见钥匙在那儿(
阅读全文
Java线程同步
摘要:一、当两个并发线程访问同一个对象object中的这个synchronized(this)同步代码块时,一个时间内只能有一个线程得到执行。另一个线程必须等待当前线程执行完这个代码块以后才能执行该代码块。package com.wjy.synchronize;public class MyThread implements Runnable{ @Override public void run() { // TODO Auto-generated method stub synchronized (this) { for(int i=0...
阅读全文
Java使用Socket传输文件遇到的问题
摘要:1.写了一个socket传输文件的程序,发现传输过去文件有问题。找了一下午终于似乎找到了原因,记录下来警示一下: 接受文件的一端,向本地写文件之前使用Thread.sleep(time)休息一下就解决了问题。 个人认为可能是传输过程中,接收端向磁盘写速度有点慢,被后面的覆盖导致错误。//---------------------------------------------------------------------------------------------------------------...
阅读全文
Java对象序列化/反序列化的注意事项
摘要:Java对象序列化 对于一个存在Java虚拟机中的对象来说,其内部的状态只是保存在内存中。JVM退出之后,内存资源也就被释放,Java对象的内部状态也就丢失了。而在很多情况下,对象内部状态是需要被持久化的,将运行中的对象状态保存下来(最直接的方式就是保存到文件系统中),在需要的时候可以还原,即使是在Java虚拟机退出的情况下。 对象序列化机制是Java内建的一种对象持久化方式,可以很容易实现在JVM中的活动对象与字节数组(流)之间进行转换,使用得Java对象可以被存储,可以被网络传输,在网络的一端将对象序列化成字节流,经过网络传输到网络的另一端,可以从字节流重新还原为Java虚拟机中的运行状态
阅读全文
初尝Java序列化/反序列化对象
摘要:看个类:package com.wjy.bytes;import java.io.Serializable;public class ObjTest implements Serializable{ private int age; private String name; public ObjTest(int age, String name) { super(); this.age = age; this.name = name; } public int getAge() { return age; ...
阅读全文
Java的byte数组
摘要:今天我们讨论一下Java的byte数组。byte数组就是字节数组,每一位存一个字节。看下面程序,猜猜输出多少?package com.wjy.bytes;import java.io.File;import java.io.FileInputStream;import java.io.FileNotFoundException;import java.io.IOException;public class ByteArrayTest { public static void main(String args[]){ byte array[]=new by...
阅读全文
在C#或者SWT上跨进程访问SWT控件的问题
摘要:可能为了进程安全,无论是C#的Form还是Eclipse的SWT,都不允许跨进程访问控件。 通俗一点说就是: A进程创建了控件Widget,若想在B进程中访问控件Widget就会报错,必须在创建Widget的进程中访问该控件。即使将进程B的对象写成内部类放在A进程的类中也不行。 解决办法就是: Java:使用Display.getDefault().syncExec(new Runnable() {public void run() {//操作控件的代码。}}); C#:使用delegate 委托。
阅读全文
SWT中的多线程(Invalid thread access)
摘要:最近在学习swt的东西,遇到一个问题,特转录如下。SWT异常: org.eclipse.swt.SWTException: Invalid thread access在创建SWT界面的线程之外的线程中尝试去修改界面元素.将抛出以下异常Exceptioninthread"Thread-0"org.eclipse.swt.SWTException:Invalidthreadaccessatorg.eclipse.swt.SWT.error(SWT.java:2942)atorg.eclipse.swt.SWT.error(SWT.java:2865)atorg.eclipse.
阅读全文
关于Java中的final关键字
摘要:final关键字可以修饰 类,方法,变量。1.用final修饰的类,不能被继承。2.用final修饰的方法,不能被重写可以被继承。3.用final修饰的变量,不能被改变。
阅读全文
Java使用反射机制优化工厂方法
摘要:我先举个例子,有一个接口People,这个接口有一个方法:package com.wjy.reflect;public interface People { public abstract void show();}有两个类Student,Teacher分别实现了这个People接口:package com.wjy.reflect;public class Teacher implements People{ @Override public void show() { // TODO Auto-generated method stub Syst...
阅读全文
Java反射机制小例子
摘要:package com.wjy.main;import java.io.Console;import java.lang.reflect.Constructor;import java.lang.reflect.Method;import com.wjy.reflect.Student;public class TestMain { public static void main(String args[]){ try{ Class cls=Class.forName("com.wjy.reflect.Student"); //Class cls...
阅读全文
Java字节流和字符流
摘要:file.txt文本中存储的内容:好abc1.字符流处理:package com.wjy.java;import java.io.FileInputStream;import java.io.FileReader;import java.io.IOException; class Test { public static void main(String[] args){ int byteEx;try{ FileReader inputStream=new FileReader("./file/file.txt"); while((byteEx=...
阅读全文
Java中定时器的使用
摘要:import java.text.SimpleDateFormat;import java.util.Date;import java.util.Timer;import java.util.TimerTask;class MyTimerTask extends TimerTask{ SimpleDateFormat dateFormat=new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); @Override public void run() { // TODO Auto-generated method stub ...
阅读全文
定义Java类的数组的问题
摘要:定义了一个类:class Student{ private int Id; public int getId() { return Id; } public void setId(int id) { Id = id; } }现在想定义这个类的数组,应该这样:Student[] student=new Student[2]; //假定指定数组大小为2但是在执行以下代码的时候就会出错:student[0].setId(111);student[1].setId(112);显示空指针异常。原因就是: 数组指定大小初始化之后,并...
阅读全文
String数组必须初始化之后才能赋值
摘要:犯了一个很大的错误:String sample[]=null;sample[0]="hello";samlple[1]="world";直接就报异常了。记住了!!!正确的写法是:String sample[]=new String[2];sample[0]="hello";samlple[1]="world";//******************************************************************************************************
阅读全文
Date和String类型的相互转换
摘要:String转Date: SimpleDateFormat bartDateFormat = new SimpleDateFormat("MM-dd-yyyy"); String dateStringToParse = "9-29-2001"; Date date = bartDateFormat.parse(dateStringToParse); Date转String:SimpleDateFormat date = new SimpleDateFormat("yyyy-MM-dd");date.format(new Da...
阅读全文
用xml建立仓库的逻辑层的操作
摘要:package com.repositoryclient.xml;import java.io.FileNotFoundException;import java.io.FileOutputStream;import java.io.StringBufferInputStream;import java.text.ParseException;import java.text.SimpleDateFormat;import java.util.ArrayList;import java.util.Date;import java.util.List;import javax.xml.parse
阅读全文
Java对Xml进行操作的实例(转)
摘要:这是一个用JAVA W3C DOM 进行XML操作的例子,包含了查询、增加、修改、删除、保存的基本操作。较完整的描述了一个XML的整个操作流程。适合刚入门JAVA XML操作的朋友参考和学习。假设有XML文件:test1.xml哈里波特10这是一本很好看的书。三国演义10四大名著之一。水浒6四大名著之一。红楼5四大名著之一。下面是为Test.javaimport java.io.File;import java.io.FileNotFoundException;import java.io.FileOutputStream;import java.io.IOException;import o
阅读全文
String的split
摘要:对于 http://10.13.30.22/svn/SVNRepository/UnChecked/Test 想要分割他就要用:String subContent[]=modelInfo.getPath().split("/");对于 C:\Intel\Logs\Test 想要分割他就要用: String.split("\\\\");1、如果用“.”作为分隔的话,必须是如下写法:String.split("\\."),这样才能正确的分隔开,不能用String.split(".");2、如果用“|”作为分隔的话,必须
阅读全文