
// DO NOT EDIT THIS FILE - it is machine generated -*- c++ -*-

#ifndef __java_util_concurrent_Executors$PrivilegedThreadFactory__
#define __java_util_concurrent_Executors$PrivilegedThreadFactory__

#pragma interface

#include <java/util/concurrent/Executors$DefaultThreadFactory.h>
extern "Java"
{
  namespace java
  {
    namespace security
    {
        class AccessControlContext;
    }
  }
}

class java::util::concurrent::Executors$PrivilegedThreadFactory : public ::java::util::concurrent::Executors$DefaultThreadFactory
{

public: // actually package-private
  Executors$PrivilegedThreadFactory();
public:
  virtual ::java::lang::Thread * newThread(::java::lang::Runnable *);
public: // actually package-private
  static ::java::lang::ClassLoader * access$0(::java::util::concurrent::Executors$PrivilegedThreadFactory *);
  static ::java::security::AccessControlContext * access$1(::java::util::concurrent::Executors$PrivilegedThreadFactory *);
private:
  ::java::lang::ClassLoader * __attribute__((aligned(__alignof__( ::java::util::concurrent::Executors$DefaultThreadFactory)))) ccl;
  ::java::security::AccessControlContext * acc;
public:
  static ::java::lang::Class class$;
};

#endif // __java_util_concurrent_Executors$PrivilegedThreadFactory__
