Java Code Examples


Thread
Thread Cancellation
public class BroadcastThread extends Thread {
    private volatile boolean running; // ===> volatile
    private static BroadcastThread instance;
    private final static long BROADCAST_INTERVAL = 10000;
    private BroadcastThread() {
    }
    public synchronized static BroadcastThread getInstance() {
       if (instance == null) {
           instance = new BroadcastThread();
       }
       return instance;
    }
    public void run() {
       running = true;
       while (running) {
           try {
              broadcastMessages();
              try {
                  Thread.sleep(BROADCAST_INTERVAL);
              } catch (InterruptedException e) {
                  e.printStackTrace();
              }
           } catch (Exception e) {
              // this thread is expected to continue to run even after hit
              // exception, so capture all exception
              e.printStackTrace();
              // recover
           }
       }
    }
    public void shutdown() {
       running = false;
       interrupt();
    }
    private void broadcastMessages() {
    }
}
Never invoke wait outside a loop

public static void main(String[] args) {
    synchronized (obj) {
        while (<condition does not hold>)
            obj.wait();
            // Perform action appropriate to condition
    }
}
Lazy Initialization Idiom
Initialize-on-demand holder class idiom to lazy initialize a static field:

// Lazy initialization holder class idiom for static fields
private static class FieldHolder {
    static final FieldType field = computeFieldValue();
}
static FieldType getField() { return FieldHolder.field; }  
Use the double-check idiom to lazy initialize a instance field(Only work in JDK5.0 and later):

// Double-check idiom for lazy initialization of instance fields
private volatile FieldType field;
public FieldType getField() {
    if (field == null) { // First check (no locking)
       synchronized(this) {
           if (field == null) // Second check (with locking)
              field = computeFieldValue();
       }
    }
    return field;
}
Design Pattern - Singleton
public class EagerSingleton {
     private static final EagerSingleton instance = new EagerSingleton();
     private EagerSingleton() {
     }
     public static EagerSingleton getInstance() {
         return instance;
     }
}




public class LazySingleton {
     private static LazySingleton instance;
     private LazySingleton() {
     }
     public static synchronized LazySingleton getInstance() {
         if (instance == null) {
              instance = new LazySingleton();
         }
         return instance;
     }
}
IO:

public class SerializationUtils {
    public static Object deserialize(String filename)
            throws FileNotFoundException, IOException, ClassNotFoundException {
        Object object = null;
        FileInputStream fis = null;
        ObjectInputStream in = null;
        fis = new FileInputStream(filename);
        in = new ObjectInputStream(fis);
        object =  in.readObject();
        in.close();
        return object;
    }
    public static void serialize(String filename, Object object)
            throws FileNotFoundException, IOException {
        FileOutputStream fos = null;
        ObjectOutputStream out = null;
        fos = new FileOutputStream(filename);
        out = new ObjectOutputStream(fos);
        out.writeObject(object);
        out.flush();
        out.close();
    }
}
Read/Write object with ByteArrayInputStream/ByteArrayOutputStream

ByteArrayOutputStream bout = new ByteArrayOutputStream();
ObjectOutputStream oout = new ObjectOutputStream(bout);
oout.writeInt(20);
oout.flush();

byte[] bytes = bout.toByteArray();
ByteArrayInputStream bin = new ByteArrayInputStream(bytes);
ObjectInputStream oin = new ObjectInputStream(bin);
System.out.println(oin.readInt());
Have a multi-line value in a properties file
You add a slash ("\") to continue the value on the next line.

MessageFormat
String result = MessageFormat
       .format("The book with title {0} is sold with price {1,number,currency} to {2}",new Object[] { title, price, buyername });
MessageFormat form = new MessageFormat(
       "The disk \"{1}\" contains {0} file(s).");
System.out.println(form.format(testArgs));
Load resources from the classpath
BufferedReader reader = new BufferedReader(new InputStreamReader(this
       .getClass().getResourceAsStream(filePath)));
Network
Print all local address:
public static void printAllLocalAddress() throws SocketException
{
    Enumeration nis = NetworkInterface.getNetworkInterfaces();
    while( nis.hasMoreElements() )
    {
        NetworkInterface ni = (NetworkInterface)nis.nextElement();
        //Enumerate InetAddress of this network interface
        Enumeration addresses = ni.getInetAddresses();
        while( addresses.hasMoreElements() )
        {
            InetAddress address = (InetAddress)addresses.nextElement();
            System.out.println(address);
        }
    }
}
Post a Comment

Labels

Java (159) Lucene-Solr (112) Interview (61) All (58) J2SE (53) Algorithm (45) Soft Skills (38) Eclipse (33) Code Example (31) Linux (25) JavaScript (23) Spring (22) Windows (22) Web Development (20) Tools (19) Nutch2 (18) Bugs (17) Debug (16) Defects (14) Text Mining (14) J2EE (13) Network (13) Troubleshooting (13) PowerShell (11) Chrome (9) Design (9) How to (9) Learning code (9) Performance (9) Problem Solving (9) UIMA (9) html (9) Http Client (8) Maven (8) Security (8) bat (8) blogger (8) Big Data (7) Continuous Integration (7) Google (7) Guava (7) JSON (7) Shell (7) ANT (6) Coding Skills (6) Database (6) Lesson Learned (6) Programmer Skills (6) Scala (6) Tips (6) css (6) Algorithm Series (5) Cache (5) Dynamic Languages (5) IDE (5) System Design (5) adsense (5) xml (5) AIX (4) Code Quality (4) GAE (4) Git (4) Good Programming Practices (4) Jackson (4) Memory Usage (4) Miscs (4) OpenNLP (4) Project Managment (4) Spark (4) Testing (4) ads (4) regular-expression (4) Android (3) Apache Spark (3) Become a Better You (3) Concurrency (3) Eclipse RCP (3) English (3) Happy Hacking (3) IBM (3) J2SE Knowledge Series (3) JAX-RS (3) Jetty (3) Restful Web Service (3) Script (3) regex (3) seo (3) .Net (2) Android Studio (2) Apache (2) Apache Procrun (2) Architecture (2) Batch (2) Bit Operation (2) Build (2) Building Scalable Web Sites (2) C# (2) C/C++ (2) CSV (2) Career (2) Cassandra (2) Distributed (2) Fiddler (2) Firefox (2) Google Drive (2) Gson (2) How to Interview (2) Html Parser (2) Http (2) Image Tools (2) JQuery (2) Jersey (2) LDAP (2) Life (2) Logging (2) Python (2) Software Issues (2) Storage (2) Text Search (2) xml parser (2) AOP (1) Application Design (1) AspectJ (1) Chrome DevTools (1) Cloud (1) Codility (1) Data Mining (1) Data Structure (1) ExceptionUtils (1) Exif (1) Feature Request (1) FindBugs (1) Greasemonkey (1) HTML5 (1) Httpd (1) I18N (1) IBM Java Thread Dump Analyzer (1) JDK Source Code (1) JDK8 (1) JMX (1) Lazy Developer (1) Mac (1) Machine Learning (1) Mobile (1) My Plan for 2010 (1) Netbeans (1) Notes (1) Operating System (1) Perl (1) Problems (1) Product Architecture (1) Programming Life (1) Quality (1) Redhat (1) Redis (1) Review (1) RxJava (1) Solutions logs (1) Team Management (1) Thread Dump Analyzer (1) Visualization (1) boilerpipe (1) htm (1) ongoing (1) procrun (1) rss (1)

Popular Posts