private void startThread() throws Exception {

		if (secureInstance.getInstance() != null) {

			// Initialize a new Thread with a random ThreadGroup and a new Name
			ownThread = new Thread(CodeSupSecurityManager.getInstance()
					.getThreadGroup(securityKey), this,
					secureInstance.getClassName() + "." + methodName);

			// Observe the Thread in the WatchDog
			WatchDog.getInstance()
					.setThread(ownThread, maxRealTime, maxCPUTime);

			// Search for the right Method in the Class
			for (final Method method : secureInstance.getInstance().getClass()
					.getMethods()) {

				// if it isn't the right we go straight forward
				if ((!method.getName().equals(methodName))) {
					continue;
				}

				// we found the right method, now search for the right
				// parameters
				parameterTypes = method.getParameterTypes();

				for (int i = 0; i < parameterTypes.length; i++) {

					if (!parameterTypes[i].getClass().isAssignableFrom(
							parameters[i].getClass())) {
						found = false;
						break;
					}
				}
			}

			if (found == true || parameterTypes != null) {
				ownThread.start();
				ownThread.join();
				// Tell the WatchDog that the thread finished already
				WatchDog.getInstance().interrupt();
			}
		}
	}