You are viewing a plain text version of this content. The canonical link for it is here.
Posted to scm@geronimo.apache.org by ga...@apache.org on 2008/04/23 07:04:08 UTC
svn commit: r650745 - in /geronimo/sandbox/concurrent:
geronimo-concurrent-core/src/main/java/org/apache/geronimo/concurrent/thread/
geronimo-concurrent-core/src/test/java/org/apache/geronimo/concurrent/executor/
geronimo-concurrent-core/src/test/java/...
Author: gawor
Date: Tue Apr 22 22:04:04 2008
New Revision: 650745
URL: http://svn.apache.org/viewvc?rev=650745&view=rev
Log:
refactor managed thread factory a bit
Added:
geronimo/sandbox/concurrent/geronimo-concurrent-core/src/main/java/org/apache/geronimo/concurrent/thread/BasicManagedThreadFactory.java (with props)
Modified:
geronimo/sandbox/concurrent/geronimo-concurrent-core/src/main/java/org/apache/geronimo/concurrent/thread/AbstractManagedThreadFactory.java
geronimo/sandbox/concurrent/geronimo-concurrent-core/src/test/java/org/apache/geronimo/concurrent/executor/ComponentManagedExecutorServiceTest.java
geronimo/sandbox/concurrent/geronimo-concurrent-core/src/test/java/org/apache/geronimo/concurrent/executor/ComponentManagedScheduledExecutorServiceTest.java
geronimo/sandbox/concurrent/geronimo-concurrent-core/src/test/java/org/apache/geronimo/concurrent/executor/ServerManagedExecutorServiceTest.java
geronimo/sandbox/concurrent/geronimo-concurrent-core/src/test/java/org/apache/geronimo/concurrent/executor/ServerManagedScheduledExecutorServiceTest.java
geronimo/sandbox/concurrent/geronimo-concurrent-core/src/test/java/org/apache/geronimo/concurrent/thread/ManagedThreadFactoryTest.java
geronimo/sandbox/concurrent/geronimo-concurrent/src/main/java/org/apache/geronimo/concurrent/impl/thread/GeronimoManagedThreadFactory.java
Modified: geronimo/sandbox/concurrent/geronimo-concurrent-core/src/main/java/org/apache/geronimo/concurrent/thread/AbstractManagedThreadFactory.java
URL: http://svn.apache.org/viewvc/geronimo/sandbox/concurrent/geronimo-concurrent-core/src/main/java/org/apache/geronimo/concurrent/thread/AbstractManagedThreadFactory.java?rev=650745&r1=650744&r2=650745&view=diff
==============================================================================
--- geronimo/sandbox/concurrent/geronimo-concurrent-core/src/main/java/org/apache/geronimo/concurrent/thread/AbstractManagedThreadFactory.java (original)
+++ geronimo/sandbox/concurrent/geronimo-concurrent-core/src/main/java/org/apache/geronimo/concurrent/thread/AbstractManagedThreadFactory.java Tue Apr 22 22:04:04 2008
@@ -16,9 +16,6 @@
*/
package org.apache.geronimo.concurrent.thread;
-import java.util.ArrayList;
-import java.util.Collections;
-import java.util.List;
import java.util.concurrent.atomic.AtomicInteger;
import javax.util.concurrent.ManagedThreadFactory;
@@ -26,17 +23,13 @@
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
-public class AbstractManagedThreadFactory
+public abstract class AbstractManagedThreadFactory
implements ManagedThreadFactory, ThreadLifecycleListener {
private final static Log LOG = LogFactory.getLog(AbstractManagedThreadFactory.class);
private static final AtomicInteger groupNumber = new AtomicInteger(1);
-
- protected List<ManagedThread> threads =
- Collections.synchronizedList(new ArrayList<ManagedThread>());
- protected boolean stopped = false;
-
+
private final AtomicInteger threadNumber = new AtomicInteger(1);
private int threadPriority = Thread.NORM_PRIORITY;
private boolean daemonThread = false;
@@ -96,7 +89,8 @@
public Thread newThread(Runnable runnable) {
if (!isRunning()) {
- throw new IllegalArgumentException();
+ throw new IllegalArgumentException(
+ "Component that created this thread factory is no longer running");
}
String name = this.threadGroup.getName() + "-t" + this.threadNumber.getAndIncrement();
@@ -104,11 +98,9 @@
thread.setPriority(this.threadPriority);
thread.setDaemon(this.daemonThread);
thread.setHungTaskThreshold(this.hungTaskThreshold);
+
+ LOG.debug("Created thread: " + thread);
- this.threads.add(thread);
-
- LOG.debug("Added thread: " + thread);
-
return thread;
}
@@ -120,35 +112,10 @@
}
public void threadStopped(Thread thread) {
- this.threads.remove(thread);
-
- LOG.debug("Removed thread: " + thread);
- }
-
- protected void updateStatus() {
- List<ManagedThread> threadList = getThreadList();
- for (ManagedThread thread : threadList) {
- thread.updateState();
- }
- }
-
- protected List<ManagedThread> getThreadList() {
- synchronized(this.threads) {
- return new ArrayList<ManagedThread>(this.threads);
- }
- }
-
- public boolean isRunning() {
- return !this.stopped;
- }
-
- public void shutdown() {
- this.stopped = true;
- synchronized(this.threads) {
- for (Thread thread : this.threads) {
- thread.interrupt();
- }
- }
}
+
+ public abstract boolean isRunning();
+
+ public abstract void shutdown();
}
Added: geronimo/sandbox/concurrent/geronimo-concurrent-core/src/main/java/org/apache/geronimo/concurrent/thread/BasicManagedThreadFactory.java
URL: http://svn.apache.org/viewvc/geronimo/sandbox/concurrent/geronimo-concurrent-core/src/main/java/org/apache/geronimo/concurrent/thread/BasicManagedThreadFactory.java?rev=650745&view=auto
==============================================================================
--- geronimo/sandbox/concurrent/geronimo-concurrent-core/src/main/java/org/apache/geronimo/concurrent/thread/BasicManagedThreadFactory.java (added)
+++ geronimo/sandbox/concurrent/geronimo-concurrent-core/src/main/java/org/apache/geronimo/concurrent/thread/BasicManagedThreadFactory.java Tue Apr 22 22:04:04 2008
@@ -0,0 +1,78 @@
+/**
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements. See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package org.apache.geronimo.concurrent.thread;
+
+import java.util.ArrayList;
+import java.util.Collections;
+import java.util.List;
+
+import org.apache.commons.logging.Log;
+import org.apache.commons.logging.LogFactory;
+
+public class BasicManagedThreadFactory extends AbstractManagedThreadFactory {
+
+ private final static Log LOG = LogFactory.getLog(BasicManagedThreadFactory.class);
+
+ protected List<ManagedThread> threads =
+ Collections.synchronizedList(new ArrayList<ManagedThread>());
+ protected boolean stopped = false;
+
+ @Override
+ public Thread newThread(Runnable runnable) {
+ ManagedThread thread = (ManagedThread)super.newThread(runnable);
+
+ this.threads.add(thread);
+
+ LOG.debug("Added thread: " + thread);
+
+ return thread;
+ }
+
+ @Override
+ public void threadStopped(Thread thread) {
+ this.threads.remove(thread);
+
+ LOG.debug("Removed thread: " + thread);
+ }
+
+ protected void updateStatus() {
+ List<ManagedThread> threadList = getThreadList();
+ for (ManagedThread thread : threadList) {
+ thread.updateState();
+ }
+ }
+
+ protected List<ManagedThread> getThreadList() {
+ synchronized(this.threads) {
+ return new ArrayList<ManagedThread>(this.threads);
+ }
+ }
+
+ public boolean isRunning() {
+ return !this.stopped;
+ }
+
+ public void shutdown() {
+ this.stopped = true;
+ synchronized(this.threads) {
+ for (Thread thread : this.threads) {
+ thread.interrupt();
+ }
+ }
+ }
+
+}
Propchange: geronimo/sandbox/concurrent/geronimo-concurrent-core/src/main/java/org/apache/geronimo/concurrent/thread/BasicManagedThreadFactory.java
------------------------------------------------------------------------------
svn:eol-style = native
Modified: geronimo/sandbox/concurrent/geronimo-concurrent-core/src/test/java/org/apache/geronimo/concurrent/executor/ComponentManagedExecutorServiceTest.java
URL: http://svn.apache.org/viewvc/geronimo/sandbox/concurrent/geronimo-concurrent-core/src/test/java/org/apache/geronimo/concurrent/executor/ComponentManagedExecutorServiceTest.java?rev=650745&r1=650744&r2=650745&view=diff
==============================================================================
--- geronimo/sandbox/concurrent/geronimo-concurrent-core/src/test/java/org/apache/geronimo/concurrent/executor/ComponentManagedExecutorServiceTest.java (original)
+++ geronimo/sandbox/concurrent/geronimo-concurrent-core/src/test/java/org/apache/geronimo/concurrent/executor/ComponentManagedExecutorServiceTest.java Tue Apr 22 22:04:04 2008
@@ -24,8 +24,7 @@
import org.apache.geronimo.concurrent.ManagedContextHandler;
import org.apache.geronimo.concurrent.ManagedContextHandlerChain;
import org.apache.geronimo.concurrent.TestContextHandler;
-import org.apache.geronimo.concurrent.executor.ComponentManagedExecutorService;
-import org.apache.geronimo.concurrent.thread.AbstractManagedThreadFactory;
+import org.apache.geronimo.concurrent.thread.BasicManagedThreadFactory;
public class ComponentManagedExecutorServiceTest extends BasicManagedExecutorServiceTest {
@@ -49,7 +48,7 @@
getManagedContextHandler());
}
private static ManagedThreadFactory getManagedThreadFactory() {
- AbstractManagedThreadFactory factory = new AbstractManagedThreadFactory();
+ ManagedThreadFactory factory = new BasicManagedThreadFactory();
return factory;
}
private static ManagedContextHandler getManagedContextHandler() {
Modified: geronimo/sandbox/concurrent/geronimo-concurrent-core/src/test/java/org/apache/geronimo/concurrent/executor/ComponentManagedScheduledExecutorServiceTest.java
URL: http://svn.apache.org/viewvc/geronimo/sandbox/concurrent/geronimo-concurrent-core/src/test/java/org/apache/geronimo/concurrent/executor/ComponentManagedScheduledExecutorServiceTest.java?rev=650745&r1=650744&r2=650745&view=diff
==============================================================================
--- geronimo/sandbox/concurrent/geronimo-concurrent-core/src/test/java/org/apache/geronimo/concurrent/executor/ComponentManagedScheduledExecutorServiceTest.java (original)
+++ geronimo/sandbox/concurrent/geronimo-concurrent-core/src/test/java/org/apache/geronimo/concurrent/executor/ComponentManagedScheduledExecutorServiceTest.java Tue Apr 22 22:04:04 2008
@@ -21,8 +21,7 @@
import org.apache.geronimo.concurrent.ManagedContextHandler;
import org.apache.geronimo.concurrent.ManagedContextHandlerChain;
import org.apache.geronimo.concurrent.TestContextHandler;
-import org.apache.geronimo.concurrent.executor.ComponentManagedScheduledExecutorService;
-import org.apache.geronimo.concurrent.thread.AbstractManagedThreadFactory;
+import org.apache.geronimo.concurrent.thread.BasicManagedThreadFactory;
public class ComponentManagedScheduledExecutorServiceTest extends BasicManagedScheduledExecutorServiceTest {
@@ -46,7 +45,7 @@
getManagedContextHandler());
}
private static ManagedThreadFactory getManagedThreadFactory() {
- AbstractManagedThreadFactory factory = new AbstractManagedThreadFactory();
+ ManagedThreadFactory factory = new BasicManagedThreadFactory();
return factory;
}
private static ManagedContextHandler getManagedContextHandler() {
Modified: geronimo/sandbox/concurrent/geronimo-concurrent-core/src/test/java/org/apache/geronimo/concurrent/executor/ServerManagedExecutorServiceTest.java
URL: http://svn.apache.org/viewvc/geronimo/sandbox/concurrent/geronimo-concurrent-core/src/test/java/org/apache/geronimo/concurrent/executor/ServerManagedExecutorServiceTest.java?rev=650745&r1=650744&r2=650745&view=diff
==============================================================================
--- geronimo/sandbox/concurrent/geronimo-concurrent-core/src/test/java/org/apache/geronimo/concurrent/executor/ServerManagedExecutorServiceTest.java (original)
+++ geronimo/sandbox/concurrent/geronimo-concurrent-core/src/test/java/org/apache/geronimo/concurrent/executor/ServerManagedExecutorServiceTest.java Tue Apr 22 22:04:04 2008
@@ -24,8 +24,7 @@
import org.apache.geronimo.concurrent.ManagedContextHandler;
import org.apache.geronimo.concurrent.ManagedContextHandlerChain;
import org.apache.geronimo.concurrent.TestContextHandler;
-import org.apache.geronimo.concurrent.executor.ServerManagedExecutorService;
-import org.apache.geronimo.concurrent.thread.AbstractManagedThreadFactory;
+import org.apache.geronimo.concurrent.thread.BasicManagedThreadFactory;
public class ServerManagedExecutorServiceTest extends BasicManagedExecutorServiceTest {
@@ -49,7 +48,7 @@
getManagedContextHandler());
}
private static ManagedThreadFactory getManagedThreadFactory() {
- AbstractManagedThreadFactory factory = new AbstractManagedThreadFactory();
+ ManagedThreadFactory factory = new BasicManagedThreadFactory();
return factory;
}
private static ManagedContextHandler getManagedContextHandler() {
Modified: geronimo/sandbox/concurrent/geronimo-concurrent-core/src/test/java/org/apache/geronimo/concurrent/executor/ServerManagedScheduledExecutorServiceTest.java
URL: http://svn.apache.org/viewvc/geronimo/sandbox/concurrent/geronimo-concurrent-core/src/test/java/org/apache/geronimo/concurrent/executor/ServerManagedScheduledExecutorServiceTest.java?rev=650745&r1=650744&r2=650745&view=diff
==============================================================================
--- geronimo/sandbox/concurrent/geronimo-concurrent-core/src/test/java/org/apache/geronimo/concurrent/executor/ServerManagedScheduledExecutorServiceTest.java (original)
+++ geronimo/sandbox/concurrent/geronimo-concurrent-core/src/test/java/org/apache/geronimo/concurrent/executor/ServerManagedScheduledExecutorServiceTest.java Tue Apr 22 22:04:04 2008
@@ -21,8 +21,7 @@
import org.apache.geronimo.concurrent.ManagedContextHandler;
import org.apache.geronimo.concurrent.ManagedContextHandlerChain;
import org.apache.geronimo.concurrent.TestContextHandler;
-import org.apache.geronimo.concurrent.executor.ServerManagedScheduledExecutorService;
-import org.apache.geronimo.concurrent.thread.AbstractManagedThreadFactory;
+import org.apache.geronimo.concurrent.thread.BasicManagedThreadFactory;
public class ServerManagedScheduledExecutorServiceTest extends BasicManagedScheduledExecutorServiceTest {
@@ -46,7 +45,7 @@
getManagedContextHandler());
}
private static ManagedThreadFactory getManagedThreadFactory() {
- AbstractManagedThreadFactory factory = new AbstractManagedThreadFactory();
+ ManagedThreadFactory factory = new BasicManagedThreadFactory();
return factory;
}
private static ManagedContextHandler getManagedContextHandler() {
Modified: geronimo/sandbox/concurrent/geronimo-concurrent-core/src/test/java/org/apache/geronimo/concurrent/thread/ManagedThreadFactoryTest.java
URL: http://svn.apache.org/viewvc/geronimo/sandbox/concurrent/geronimo-concurrent-core/src/test/java/org/apache/geronimo/concurrent/thread/ManagedThreadFactoryTest.java?rev=650745&r1=650744&r2=650745&view=diff
==============================================================================
--- geronimo/sandbox/concurrent/geronimo-concurrent-core/src/test/java/org/apache/geronimo/concurrent/thread/ManagedThreadFactoryTest.java (original)
+++ geronimo/sandbox/concurrent/geronimo-concurrent-core/src/test/java/org/apache/geronimo/concurrent/thread/ManagedThreadFactoryTest.java Tue Apr 22 22:04:04 2008
@@ -26,7 +26,6 @@
import org.apache.geronimo.concurrent.ManagedContextHandlerChain;
import org.apache.geronimo.concurrent.TestContextHandler;
-import org.apache.geronimo.concurrent.thread.AbstractManagedThreadFactory;
import org.apache.geronimo.concurrent.thread.ManagedThread;
import org.apache.geronimo.concurrent.thread.ManagedThreadFactoryUtils;
@@ -35,7 +34,7 @@
public class ManagedThreadFactoryTest extends TestCase {
private ManagedThreadFactory getManagedThreadFactory() {
- AbstractManagedThreadFactory factory = new AbstractManagedThreadFactory();
+ ManagedThreadFactory factory = new BasicManagedThreadFactory();
ManagedContextHandlerChain chain = new ManagedContextHandlerChain();
chain.addManagedContextHandler(new TestContextHandler());
return ManagedThreadFactoryUtils.createStandaloneThreadFactory(factory, chain);
Modified: geronimo/sandbox/concurrent/geronimo-concurrent/src/main/java/org/apache/geronimo/concurrent/impl/thread/GeronimoManagedThreadFactory.java
URL: http://svn.apache.org/viewvc/geronimo/sandbox/concurrent/geronimo-concurrent/src/main/java/org/apache/geronimo/concurrent/impl/thread/GeronimoManagedThreadFactory.java?rev=650745&r1=650744&r2=650745&view=diff
==============================================================================
--- geronimo/sandbox/concurrent/geronimo-concurrent/src/main/java/org/apache/geronimo/concurrent/impl/thread/GeronimoManagedThreadFactory.java (original)
+++ geronimo/sandbox/concurrent/geronimo-concurrent/src/main/java/org/apache/geronimo/concurrent/impl/thread/GeronimoManagedThreadFactory.java Tue Apr 22 22:04:04 2008
@@ -19,10 +19,10 @@
import java.util.ArrayList;
import java.util.List;
-import org.apache.geronimo.concurrent.thread.AbstractManagedThreadFactory;
+import org.apache.geronimo.concurrent.thread.BasicManagedThreadFactory;
import org.apache.geronimo.concurrent.thread.ManagedThread;
-public class GeronimoManagedThreadFactory extends AbstractManagedThreadFactory {
+public class GeronimoManagedThreadFactory extends BasicManagedThreadFactory {
// gbean that manages this object
private ManagedThreadFactoryGBean factoryGBean;