xref: /AOO41X/main/jurt/com/sun/star/lib/uno/environments/remote/IThreadPool.java (revision 1ecadb572e7010ff3b3382ad9bf179dbc6efadbb)
1 /*************************************************************************
2  *
3  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
4  *
5  * Copyright 2000, 2010 Oracle and/or its affiliates.
6  *
7  * OpenOffice.org - a multi-platform office productivity suite
8  *
9  * This file is part of OpenOffice.org.
10  *
11  * OpenOffice.org is free software: you can redistribute it and/or modify
12  * it under the terms of the GNU Lesser General Public License version 3
13  * only, as published by the Free Software Foundation.
14  *
15  * OpenOffice.org is distributed in the hope that it will be useful,
16  * but WITHOUT ANY WARRANTY; without even the implied warranty of
17  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
18  * GNU Lesser General Public License version 3 for more details
19  * (a copy is included in the LICENSE file that accompanied this code).
20  *
21  * You should have received a copy of the GNU Lesser General Public License
22  * version 3 along with OpenOffice.org.  If not, see
23  * <http://www.openoffice.org/license.html>
24  * for a copy of the LGPLv3 License.
25  *
26  ************************************************************************/
27 
28 package com.sun.star.lib.uno.environments.remote;
29 
30 /**
31  * This interface is an abstraction of the various
32  * threadpool implementations.
33  * <p>
34  * @version 	$Revision: 1.7 $ $ $Date: 2008-04-11 11:20:01 $
35  * @author 	    Joerg Budischewski
36  * @author 	    Kay Ramme
37  * @see         com.sun.star.lib.uno.environments.remote.ThreadPoolFactory
38  * @see         com.sun.star.lib.uno.environments.remote.IThreadPoolFactory
39  * @since       UDK1.0
40  */
41 public interface IThreadPool {
42     /**
43      * Retrieves the global threadId for the current thread.
44      * <p>
45      * @return the thread id
46      */
47     ThreadId getThreadId();
48 
49 	/**
50 	 * Attaches this thread to the thread pool.
51 	 * <p>
52 	 * @see                 #enter
53 	 */
54 	public void attach();
55 
56     /**
57      * As above, but hands in an already existing
58      * instance of the threadid of the current thread.
59      * Returns a handle which can be used in enter and
60      * detach calls.<p>
61      * The function exists for performance
62      * optimization reasons.
63      * @see #attach
64      */
65     public Object attach( ThreadId id );
66 
67 	/**
68 	 * Detaches this thread from the thread pool.
69 	 * @see                 #enter
70 	 */
71 	public void detach();
72 
73     /**
74      * As above, but hands in an already existing
75      * instance of the threadid of the current thread
76      * and a handle returned by attach.
77      * The function exists for performance
78      * optimization reasons.
79      * @see #attach,#detach
80      */
81     public void detach( Object handle, ThreadId id );
82 
83 	/**
84 	 * Lets this thread enter the thread pool.
85 	 * This thread then executes all jobs put via
86 	 * <code>putJob</code> until a reply job arrives.
87 	 * <p>
88 	 * @see                 #putJob
89 	 */
90 	public Object enter() throws Throwable;
91 
92 	/**
93      * as above but hands in an already existing
94      * instance of the threadid of the current thread
95      * and a handle returned by attach.
96 	 * This thread then executes all jobs put via
97 	 * <code>putJob</code> until a reply job arrives.
98 	 * <p>
99 	 * @see                 #putJob
100 	 */
101     public Object enter( Object handle, ThreadId id ) throws Throwable;
102 
103 	/**
104 	 * Queues a job into the jobQueue of the thread belonging
105 	 * to the jobs threadId.
106 	 * <p>
107 	 * @param job       the job
108 	 */
109 	public void putJob(Job job);
110 
111 	/**
112 	 * Disposes this thread pool, thus releasing
113 	 * all threads by throwing a <code>DisposedException</code> with the given
114 	 * <code>Throwable</code> cause.
115 	 * <p>
116 	 * @param throwing   the cause
117 	 */
118 	public void dispose(Throwable throwable);
119 
120 
121 	/**
122 	 * Destroys the thread pool and tries
123 	 * to join all created threads immediatly.
124 	 */
125 	public void destroy();
126 }
127 
128