public static void killAWTThreads(ThreadGroup threadGroup) { Thread[] threadList = new Thread[threadGroup.activeCount()]; threadGroup.enumerate(threadList); for (int i = 0; i < threadList.length; i++) { Thread t = threadList[i]; if (t != null) { String name = t.getName(); if (name.startsWith("AWT")) { out("Interrupting thread '".concat(t.toString()).concat("'")); t.interrupt(); } } } if (threadGroup.getParent() != null) { killAWTThreads(threadGroup.getParent()); } }
private static void showThreads(PrintStream pw, ThreadGroup g, Thread current) { int nthreads = g.activeCount(); pw.println("\nThread Group = " + g.getName() + " activeCount= " + nthreads); Thread[] tarray = new Thread[nthreads]; int n = g.enumerate(tarray, false); for (int i = 0; i < n; i++) { Thread thread = tarray[i]; ClassLoader loader = thread.getContextClassLoader(); String loaderName = (loader == null) ? "Default" : loader.getClass().getName(); Thread.State state = thread.getState(); long id = thread.getId(); pw.print(" " + id + " " + thread.getName() + " " + state + " " + loaderName); if (thread == current) pw.println(" **** CURRENT ***"); else pw.println(); } int ngroups = g.activeGroupCount(); ThreadGroup[] garray = new ThreadGroup[ngroups]; int ng = g.enumerate(garray, false); for (int i = 0; i < ng; i++) { ThreadGroup nested = garray[i]; showThreads(pw, nested, current); } }
public static void printThreads() { Thread[] threads = getAllThreads(); for (int i = 0; i < threads.length; i++) { Thread t = threads[i]; if (t != null) { System.out.println(t.getName()); } } }
synchronized Object WaitForResponse(Thread t) { while (!response_set) { try { InlineJavaUtils.debug(3, "waiting for callback response in " + t.getName() + "..."); wait(); } catch (InterruptedException ie) { // Do nothing, return and wait() some more... } } InlineJavaUtils.debug(3, "got callback response"); Object resp = response; response = null; response_set = false; return resp; }
public boolean runMacroTool(String name) { for (int i = 0; i < nMacros; i++) { if (macroNames[i].startsWith(name)) { if (macroToolThread != null && macroToolThread.getName().indexOf(name) != -1 && macroToolThread.isAlive()) return false; // do nothing if this tool is already running MacroRunner mw = new MacroRunner(pgm, macroStarts[i], name, (String) null); macroToolThread = mw.getThread(); // IJ.log("runMacroTool: "+macroToolThread); return true; } } return false; }
private static void dumptg(ThreadGroup tg, PrintWriter out, int indent) { for (int o = 0; o < indent; o++) out.print("\t"); out.println("G: \"" + tg.getName() + "\""); Thread[] ths = new Thread[tg.activeCount() * 2]; ThreadGroup[] tgs = new ThreadGroup[tg.activeGroupCount() * 2]; int nt = tg.enumerate(ths, false); int ng = tg.enumerate(tgs, false); for (int i = 0; i < nt; i++) { Thread ct = ths[i]; for (int o = 0; o < indent + 1; o++) out.print("\t"); out.println("T: \"" + ct.getName() + "\""); } for (int i = 0; i < ng; i++) { ThreadGroup cg = tgs[i]; dumptg(cg, out, indent + 1); } }
synchronized void NotifyOfResponse(Thread t) { InlineJavaUtils.debug(3, "notifying that callback has completed in " + t.getName()); notify(); }
public boolean isTimerThread(Thread thread) { return THREAD_NAME.equals(thread.getName()); }
private void loadState(Element parentNode) { Element versionElement = parentNode.getChild(ELEMENT_VERSION); if (versionElement != null) { myMajorVersion = versionElement.getAttributeValue(ATTRIBUTE_MAJOR); myMinorVersion = versionElement.getAttributeValue(ATTRIBUTE_MINOR); myMicroVersion = versionElement.getAttributeValue(ATTRIBUTE_MICRO); myPatchVersion = versionElement.getAttributeValue(ATTRIBUTE_PATCH); myFullVersionFormat = versionElement.getAttributeValue(ATTRIBUTE_FULL); myCodeName = versionElement.getAttributeValue(ATTRIBUTE_CODENAME); myEAP = Boolean.parseBoolean(versionElement.getAttributeValue(ATTRIBUTE_EAP)); } Element companyElement = parentNode.getChild(ELEMENT_COMPANY); if (companyElement != null) { myCompanyName = companyElement.getAttributeValue(ATTRIBUTE_NAME, myCompanyName); myShortCompanyName = companyElement.getAttributeValue("shortName", shortenCompanyName(myCompanyName)); myCompanyUrl = companyElement.getAttributeValue(ATTRIBUTE_URL, myCompanyUrl); } Element buildElement = parentNode.getChild(ELEMENT_BUILD); if (buildElement != null) { myBuildNumber = buildElement.getAttributeValue(ATTRIBUTE_NUMBER); myApiVersion = buildElement.getAttributeValue(ATTRIBUTE_API_VERSION); setBuildNumber(myApiVersion, myBuildNumber); String dateString = buildElement.getAttributeValue(ATTRIBUTE_DATE); if (dateString.equals("__BUILD_DATE__")) { myBuildDate = new GregorianCalendar(); try { final JarFile bootJar = new JarFile( PathManager.getHomePath() + File.separator + "lib" + File.separator + "boot.jar"); try { final JarEntry jarEntry = bootJar.entries().nextElement(); // /META-INF is always updated on build myBuildDate.setTime(new Date(jarEntry.getTime())); } finally { bootJar.close(); } } catch (Exception ignore) { } } else { myBuildDate = parseDate(dateString); } String majorReleaseDateString = buildElement.getAttributeValue(ATTRIBUTE_MAJOR_RELEASE_DATE); if (majorReleaseDateString != null) { myMajorReleaseBuildDate = parseDate(majorReleaseDateString); } } Thread currentThread = Thread.currentThread(); currentThread.setName( currentThread.getName() + " " + myMajorVersion + "." + myMinorVersion + "#" + myBuildNumber + " " + ApplicationNamesInfo.getInstance().getProductName() + ", eap:" + myEAP + ", os:" + SystemInfoRt.OS_NAME + " " + SystemInfoRt.OS_VERSION + ", java-version:" + SystemProperties.getJavaVendor() + " " + SystemInfo.JAVA_RUNTIME_VERSION); Element logoElement = parentNode.getChild(ELEMENT_LOGO); if (logoElement != null) { mySplashImageUrl = logoElement.getAttributeValue(ATTRIBUTE_URL); mySplashTextColor = parseColor(logoElement.getAttributeValue(ATTRIBUTE_TEXT_COLOR)); String v = logoElement.getAttributeValue(ATTRIBUTE_PROGRESS_COLOR); if (v != null) { myProgressColor = parseColor(v); } v = logoElement.getAttributeValue(ATTRIBUTE_PROGRESS_TAIL_ICON); if (v != null) { myProgressTailIconName = v; } v = logoElement.getAttributeValue(ATTRIBUTE_PROGRESS_HEIGHT); if (v != null) { myProgressHeight = Integer.parseInt(v); } v = logoElement.getAttributeValue(ATTRIBUTE_PROGRESS_X); if (v != null) { myProgressX = Integer.parseInt(v); } v = logoElement.getAttributeValue(ATTRIBUTE_PROGRESS_Y); if (v != null) { myProgressY = Integer.parseInt(v); } v = logoElement.getAttributeValue(ATTRIBUTE_LICENSE_TEXT_OFFSET_Y); if (v != null) { myLicenseOffsetY = Integer.parseInt(v); } } Element aboutLogoElement = parentNode.getChild(ELEMENT_ABOUT); if (aboutLogoElement != null) { myAboutImageUrl = aboutLogoElement.getAttributeValue(ATTRIBUTE_URL); String v = aboutLogoElement.getAttributeValue(ATTRIBUTE_ABOUT_FOREGROUND_COLOR); if (v != null) { myAboutForeground = parseColor(v); } v = aboutLogoElement.getAttributeValue(ATTRIBUTE_ABOUT_COPYRIGHT_FOREGROUND_COLOR); if (v != null) { myCopyrightForeground = parseColor(v); } String c = aboutLogoElement.getAttributeValue(ATTRIBUTE_ABOUT_LINK_COLOR); if (c != null) { myAboutLinkColor = parseColor(c); } String logoX = aboutLogoElement.getAttributeValue("logoX"); String logoY = aboutLogoElement.getAttributeValue("logoY"); String logoW = aboutLogoElement.getAttributeValue("logoW"); String logoH = aboutLogoElement.getAttributeValue("logoH"); if (logoX != null && logoY != null && logoW != null && logoH != null) { try { myAboutLogoRect = new Rectangle( Integer.parseInt(logoX), Integer.parseInt(logoY), Integer.parseInt(logoW), Integer.parseInt(logoH)); } catch (NumberFormatException nfe) { // ignore } } } Element iconElement = parentNode.getChild(ELEMENT_ICON); if (iconElement != null) { myIconUrl = iconElement.getAttributeValue(ATTRIBUTE_SIZE32); mySmallIconUrl = iconElement.getAttributeValue(ATTRIBUTE_SIZE16); myBigIconUrl = iconElement.getAttributeValue(ATTRIBUTE_SIZE128, (String) null); final String toolWindowIcon = iconElement.getAttributeValue(ATTRIBUTE_SIZE12); if (toolWindowIcon != null) { myToolWindowIconUrl = toolWindowIcon; } } Element packageElement = parentNode.getChild(ELEMENT_PACKAGE); if (packageElement != null) { myPackageCode = packageElement.getAttributeValue(ATTRIBUTE_CODE); } Element showLicensee = parentNode.getChild(ELEMENT_LICENSEE); if (showLicensee != null) { myShowLicensee = Boolean.valueOf(showLicensee.getAttributeValue(ATTRIBUTE_SHOW)).booleanValue(); } Element welcomeScreen = parentNode.getChild(WELCOME_SCREEN_ELEMENT_NAME); if (welcomeScreen != null) { myWelcomeScreenLogoUrl = welcomeScreen.getAttributeValue(LOGO_URL_ATTR); } Element wizardSteps = parentNode.getChild(CUSTOMIZE_IDE_WIZARD_STEPS); if (wizardSteps != null) { myCustomizeIDEWizardStepsProvider = wizardSteps.getAttributeValue(STEPS_PROVIDER); } Element editor = parentNode.getChild(ELEMENT_EDITOR); if (editor != null) { myEditorBackgroundImageUrl = editor.getAttributeValue(BACKGROUND_URL_ATTR); } Element helpElement = parentNode.getChild(HELP_ELEMENT_NAME); if (helpElement != null) { myHelpFileName = helpElement.getAttributeValue(ATTRIBUTE_HELP_FILE); myHelpRootName = helpElement.getAttributeValue(ATTRIBUTE_HELP_ROOT); final String webHelpUrl = helpElement.getAttributeValue(ATTRIBUTE_WEBHELP_URL); if (webHelpUrl != null) { myWebHelpUrl = webHelpUrl; } String attValue = helpElement.getAttributeValue(ATTRIBUTE_HAS_HELP); myHasHelp = attValue == null || Boolean.parseBoolean(attValue); // Default is true attValue = helpElement.getAttributeValue(ATTRIBUTE_HAS_CONTEXT_HELP); myHasContextHelp = attValue == null || Boolean.parseBoolean(attValue); // Default is true } Element updateUrls = parentNode.getChild(UPDATE_URLS_ELEMENT_NAME); myUpdateUrls = new UpdateUrlsImpl(updateUrls); Element documentationElement = parentNode.getChild(ELEMENT_DOCUMENTATION); if (documentationElement != null) { myDocumentationUrl = documentationElement.getAttributeValue(ATTRIBUTE_URL); } Element supportElement = parentNode.getChild(ELEMENT_SUPPORT); if (supportElement != null) { mySupportUrl = supportElement.getAttributeValue(ATTRIBUTE_URL); } Element feedbackElement = parentNode.getChild(ELEMENT_FEEDBACK); if (feedbackElement != null) { myEAPFeedbackUrl = feedbackElement.getAttributeValue(ATTRIBUTE_EAP_URL); myReleaseFeedbackUrl = feedbackElement.getAttributeValue(ATTRIBUTE_RELEASE_URL); } Element whatsnewElement = parentNode.getChild(ELEMENT_WHATSNEW); if (whatsnewElement != null) { myWhatsNewUrl = whatsnewElement.getAttributeValue(ATTRIBUTE_URL); } Element pluginsElement = parentNode.getChild(ELEMENT_PLUGINS); if (pluginsElement != null) { String url = pluginsElement.getAttributeValue(ATTRIBUTE_URL); myPluginManagerUrl = url != null ? url : DEFAULT_PLUGINS_HOST; boolean closed = StringUtil.endsWith(myPluginManagerUrl, "/"); String listUrl = pluginsElement.getAttributeValue(ATTRIBUTE_LIST_URL); myPluginsListUrl = listUrl != null ? listUrl : myPluginManagerUrl + (closed ? "" : "/") + "plugins/list/"; String channelListUrl = pluginsElement.getAttributeValue(ATTRIBUTE_CHANNEL_LIST_URL); myChannelsListUrl = channelListUrl != null ? channelListUrl : myPluginManagerUrl + (closed ? "" : "/") + "channels/list/"; String downloadUrl = pluginsElement.getAttributeValue(ATTRIBUTE_DOWNLOAD_URL); myPluginsDownloadUrl = downloadUrl != null ? downloadUrl : myPluginManagerUrl + (closed ? "" : "/") + "pluginManager/"; if (!getBuild().isSnapshot()) { myBuiltinPluginsUrl = pluginsElement.getAttributeValue(ATTRIBUTE_BUILTIN_URL); } } else { myPluginManagerUrl = DEFAULT_PLUGINS_HOST; myPluginsListUrl = DEFAULT_PLUGINS_HOST + "/plugins/list/"; myChannelsListUrl = DEFAULT_PLUGINS_HOST + "/channels/list/"; myPluginsDownloadUrl = DEFAULT_PLUGINS_HOST + "/pluginManager/"; } final String pluginsHost = System.getProperty("idea.plugins.host"); if (pluginsHost != null) { myPluginsListUrl = myPluginsListUrl.replace(DEFAULT_PLUGINS_HOST, pluginsHost); myChannelsListUrl = myChannelsListUrl.replace(DEFAULT_PLUGINS_HOST, pluginsHost); myPluginsDownloadUrl = myPluginsDownloadUrl.replace(DEFAULT_PLUGINS_HOST, pluginsHost); } Element keymapElement = parentNode.getChild(ELEMENT_KEYMAP); if (keymapElement != null) { myWinKeymapUrl = keymapElement.getAttributeValue(ATTRIBUTE_WINDOWS_URL); myMacKeymapUrl = keymapElement.getAttributeValue(ATTRIBUTE_MAC_URL); } myPluginChooserPages = new ArrayList<PluginChooserPage>(); final List children = parentNode.getChildren(PLUGINS_PAGE_ELEMENT_NAME); for (Object child : children) { myPluginChooserPages.add(new PluginChooserPageImpl((Element) child)); } List<Element> essentialPluginsElements = JDOMUtil.getChildren(parentNode, ESSENTIAL_PLUGIN); Collection<String> essentialPluginsIds = ContainerUtil.mapNotNull( essentialPluginsElements, new Function<Element, String>() { @Override public String fun(Element element) { String id = element.getTextTrim(); return StringUtil.isNotEmpty(id) ? id : null; } }); myEssentialPluginsIds = ArrayUtil.toStringArray(essentialPluginsIds); Element statisticsElement = parentNode.getChild(ELEMENT_STATISTICS); if (statisticsElement != null) { myStatisticsSettingsUrl = statisticsElement.getAttributeValue(ATTRIBUTE_STATISTICS_SETTINGS); myStatisticsServiceUrl = statisticsElement.getAttributeValue(ATTRIBUTE_STATISTICS_SERVICE); myStatisticsServiceKey = statisticsElement.getAttributeValue(ATTRIBUTE_STATISTICS_SERVICE_KEY); } else { myStatisticsSettingsUrl = "https://www.jetbrains.com/idea/statistics/stat-assistant.xml"; myStatisticsServiceUrl = "https://www.jetbrains.com/idea/statistics/index.jsp"; myStatisticsServiceKey = null; } Element thirdPartyElement = parentNode.getChild(ELEMENT_THIRD_PARTY); if (thirdPartyElement != null) { myThirdPartySoftwareUrl = thirdPartyElement.getAttributeValue(ATTRIBUTE_URL); } Element tvElement = parentNode.getChild(ELEMENT_JB_TV); if (tvElement != null) { myJetbrainsTvUrl = tvElement.getAttributeValue(ATTRIBUTE_URL); } Element evaluationElement = parentNode.getChild(ELEMENT_EVALUATION); if (evaluationElement != null) { final String url = evaluationElement.getAttributeValue(ATTRIBUTE_EVAL_LICENSE_URL); if (url != null && !url.isEmpty()) { myEvalLicenseUrl = url.trim(); } } Element licensingElement = parentNode.getChild(ELEMENT_LICENSING); if (licensingElement != null) { final String url = licensingElement.getAttributeValue(ATTRIBUTE_KEY_CONVERSION_URL); if (url != null && !url.isEmpty()) { myKeyConversionUrl = url.trim(); } } Element subscriptionsElement = parentNode.getChild(ELEMENT_SUBSCRIPTIONS); if (subscriptionsElement != null) { mySubscriptionFormId = subscriptionsElement.getAttributeValue(ATTRIBUTE_SUBSCRIPTIONS_FORM_ID); mySubscriptionNewsKey = subscriptionsElement.getAttributeValue(ATTRIBUTE_SUBSCRIPTIONS_NEWS_KEY); mySubscriptionNewsValue = subscriptionsElement.getAttributeValue(ATTRIBUTE_SUBSCRIPTIONS_NEWS_VALUE, "yes"); mySubscriptionTipsKey = subscriptionsElement.getAttributeValue(ATTRIBUTE_SUBSCRIPTIONS_TIPS_KEY); mySubscriptionTipsAvailable = Boolean.parseBoolean( subscriptionsElement.getAttributeValue(ATTRIBUTE_SUBSCRIPTIONS_TIPS_AVAILABLE)); mySubscriptionAdditionalFormData = subscriptionsElement.getAttributeValue(ATTRIBUTE_SUBSCRIPTIONS_ADDITIONAL_FORM_DATA); } }
/** * Returns a string identifying this lock, as well as its lock state. The state, in brackets, * includes either the String "Unlocked" or the String "Locked by" followed by * the {@link Thread#getName} of the owning thread. * * @return a string identifying this lock, as well as its lock state. */ public String toString() { Thread o = getOwner(); return super.toString() + ((o == null) ? "[Unlocked]" : "[Locked by thread " + o.getName() + "]"); }
public void checkHealth() { long lastDateTime = System.currentTimeMillis() - (5 * TimeManager.MILI_MINUTE); long longerDateTime = System.currentTimeMillis() - (120 * TimeManager.MILI_MINUTE); thread.status("checking"); thread.status("checking tick groups."); DVector orderedDeaths = new DVector(3); try { Tick almostTock = null; for (Iterator<Tick> e = tickGroups(); e.hasNext(); ) { almostTock = e.next(); if ((almostTock.awake) && (almostTock.lastStop < lastDateTime)) { TockClient client = almostTock.lastClient; if (client == null) insertOrderDeathInOrder( orderedDeaths, 0, "LOCKED GROUP " + almostTock.getCounter() + "! No further information.", almostTock); else if ((!CMath.bset(client.tickID, Tickable.TICKID_LONGERMASK)) || (almostTock.lastStop < longerDateTime)) { if (client.clientObject == null) insertOrderDeathInOrder( orderedDeaths, 0, "LOCKED GROUP " + almostTock.getCounter() + ": NULL @" + CMLib.time().date2String(client.lastStart) + ", tickID " + client.tickID, almostTock); else { StringBuffer str = null; Tickable obj = client.clientObject; long code = client.clientObject.getTickStatus(); String codeWord = CMLib.threads().getTickStatusSummary(client.clientObject); String msg = null; if (obj instanceof Environmental) str = new StringBuffer( "LOCKED GROUP " + almostTock.getCounter() + " : " + obj.name() + " (" + ((Environmental) obj).ID() + ") @" + CMLib.time().date2String(client.lastStart) + ", status(" + code + " (" + codeWord + "), tickID " + client.tickID); else str = new StringBuffer( "LOCKED GROUP " + almostTock.getCounter() + ": " + obj.name() + ", status(" + code + " (" + codeWord + ") @" + CMLib.time().date2String(client.lastStart) + ", tickID " + client.tickID); if ((obj instanceof MOB) && (((MOB) obj).location() != null)) msg = str.toString() + " in " + ((MOB) obj).location().roomID(); else if ((obj instanceof Item) && (((Item) obj).owner() != null) && (((Item) obj).owner() instanceof Room)) msg = str.toString() + " in " + ((Room) ((Item) obj).owner()).roomID(); else if ((obj instanceof Item) && (((Item) obj).owner() != null) && (((Item) obj).owner() instanceof MOB)) msg = str.toString() + " owned by " + ((MOB) ((Item) obj).owner()).name(); else if (obj instanceof Room) msg = str.toString() + " is " + ((Room) obj).roomID(); else msg = str.toString(); insertOrderDeathInOrder(orderedDeaths, client.lastStart, msg, almostTock); } } // no isDEBUGGING check -- just always let her rip. thread.debugDumpStack(almostTock); } } } catch (java.util.NoSuchElementException e) { } for (int i = 0; i < orderedDeaths.size(); i++) Log.errOut(thread.getName(), (String) orderedDeaths.elementAt(i, 2)); thread.status("killing tick groups."); for (int x = 0; x < orderedDeaths.size(); x++) { Tick almostTock = (Tick) orderedDeaths.elementAt(x, 3); Vector objs = new Vector(); try { for (Iterator e = almostTock.tickers(); e.hasNext(); ) objs.addElement(e.next()); } catch (NoSuchElementException e) { } almostTock.shutdown(); if (CMLib.threads() instanceof ServiceEngine) ((ServiceEngine) CMLib.threads()).delTickGroup(almostTock); for (int i = 0; i < objs.size(); i++) { TockClient c = (TockClient) objs.elementAt(i); CMLib.threads().startTickDown(c.clientObject, c.tickID, c.reTickDown); } } thread.status("Checking mud threads"); for (int m = 0; m < CMLib.hosts().size(); m++) { Vector badThreads = ((MudHost) CMLib.hosts().elementAt(m)).getOverdueThreads(); if (badThreads.size() > 0) { for (int b = 0; b < badThreads.size(); b++) { Thread T = (Thread) badThreads.elementAt(b); String threadName = T.getName(); if (T instanceof Tickable) threadName = ((Tickable) T).name() + " (" + ((Tickable) T).ID() + "): " + ((Tickable) T).getTickStatus(); thread.status("Killing " + threadName); Log.errOut("Killing stray thread: " + threadName); CMLib.killThread(T, 100, 1); } } } thread.status("Done checking threads"); }
private void checkWorkerContext() { Thread t = Thread.currentThread(); if (!t.getName().startsWith("vert.x-worker-thread")) { throw new IllegalStateException("Not a worker thread"); } }