protected double renderThread(Graphics2D g2d, Thread[] threads, int height, int width, int tdiam, int tradius,
			double angle, Thread t, Map<String, Integer> actorIdMap) {
		try {
			int x = width / 2 + (int) (Math.cos(angle) * tradius);
			int y = height / 2 + (int) (Math.sin(angle) * tradius);
			ActorRunnable ar = actorManager.getRunnable(t.getName());
			if (ar != null) {
				g2d.setColor(ar.hasThread ? Color.GREEN.darker() : Color.YELLOW);
				g2d.fillRect(x - tdiam / 2, y - tdiam / 2, tdiam, tdiam);
				Actor a = ar.actor;
				if (ar.hasThread && a != null) {
					int theight = tdiam / 2;
					Color c = actorColorMap.get(a.getClass().getName());
					if (c != null) {
						g2d.setColor(c);
						g2d.fillOval(x - theight / 2, y - theight / 2, theight, theight);
					}
					Integer count = actorIdMap.get(a.getName());
					if (count != null) {
						g2d.setColor(Color.BLACK);
						g2d.drawString(Integer.toString(count), x - tdiam / 2, y
								+ (y > height / 2 ? tdiam + 10 : -tdiam - 10));
					}
				}
			}
			angle += 2 * Math.PI / threads.length;
		} catch (Exception e) {
			paintError("thread", g2d, e);
		}
		return angle;
	}