Refactor
:my
=>
'code'
Codes
Refactorings
Popular
Best
Submit
Spam
Account
Logout
Login
JavaScript doesn't seem to be activated, expect things to be ugly and sloppy!
Learn How to Create Your Own Programming Language
createyourproglang.com
Recent
How to get accepted in Fileice (200% Working) 22/2012
Premium Account
FILE HOSTS PREMIUM ACCOUNT
ALL FILE HOST PREMIUM ACCOUNTS
Zynga Slingo Trainer v5.12
iTunes Gift Card Generator V3.1 2012
Diablo 3 GOLD Coins FREE
Working PS3 Jailbreak 3.65 And 3.66
ExtaBit Premium Accounts and Cookies
Steam Wallet Hack - Money Adder & Hack v3
Popular
XBOX POINTS GENERATOR - MICROSOFT POINTS GENERATOR v1.2012
11 may 2012 premium uploading accounts 100% working
Free Microsoft Points
Free Microsoft Points - Microsoft Points Generator - Xbox Live Codes 2012
Car Town Free Blue Points Hack
Free CarTown Blue Points Generator and CarTown Templates
Better way to get content via jQuery $.get()
Free Microsoft Points
Simple Days Purger
Sharecash Downloader Bypass Surveys New 05/2012
Pastable version of
Separate thread logic from business logic
<pre class='prettyprint' language='java'>public class ServicesRunner { public static final String SERVICE_ONE = "Service One"; public static final String SERVICE_TWO = "Service Two"; // ...many other similar strings... public static final String SERVICE_N = "Umpteenth service"; public static final String UNKNOWN_SERVICE = "Unknown Service"; public String getServiceStatus(String serviceName) { if (serviceName.equals(SERVICE_ONE) { return getServiceOneStatus; } else if (serviceName.equals(SERVICE_TWO) { return getServiceTwoStatus; } // several more else ifs... else { return UNKNOWN_SERVICE; } } private String getServiceOneStatus() { if (ServiceOne.getRunner() != null && ServiceOne.getRunner().isActive()) } return RUNNING; } else { return NOT_RUNNING; } } // all other getServiceXStatus are similar (VERY similar... TOO MUCH similar) public String runService(String ServiceName, MyDataObject myDataObject) { if (serviceName.equals(SERVICE_ONE) { return runServiceOne(myDataObject); } else if ((serviceName.equals(SERVICE_TWO) { return runServiceTwo(myDataObject); } // you guessed right... and so on and so forth else { return UNKNOWN_SERVICE { } private String runServiceOne(MyDataObject data) { String result = RUNNING; try { ServiceOne runner = new ServiceOne(); runner.setX(data.getX); runner.setY(data.getY); // etc. runner.start(); } catch (Throwable t) { result= t.getMessage(); } return result } // all other run methods are constructed in the same way }</pre> <pre class='prettyprint' language='java'>public class ServiceOne { public static ServiceOne runner = new ServiceOne(); private boolean active; private void setActive(boolean active) { this.active = active; } public boolean isActive() { return active; } public void run() { synchronized(serviceOne) { // Synchronization on a non-final field if(runner != null && runner.isActive()) { throw new RuntimeException("service already active"); } else { runner = this; runner.setActive(true); } } try { runner.myBusinessStuff(); } catch(Throwable t) { t.printStackTrace(); } finally { runner.setActive(false); } } private void myBusinessStuff() { // do all that pointless stuff that makes our managers rich } } public class myServiceX { // just like the previous one, with a different runner and different business stuff // rinse and repeat for each service }</pre> <a href="http://www.refactormycode.com/codes/781-separate-thread-logic-from-business-logic" style="color:#fff" title="As seen on RefactorMyCode.com"><img alt="Small_logo" src="http://www.refactormycode.com/images/small_logo.gif" style="border:0" /></a>