import threading
from http.server import BaseHTTPRequestHandler, HTTPServer

# Define the HTTP request handler class
class SimpleHTTPRequestHandler(BaseHTTPRequestHandler):
    # Override the do_GET method to handle GET requests
    def do_GET(self):
        # Set the response status code
        self.send_response(200)
        # Set the response headers
        self.send_header('Content-type', 'text/html')
        self.end_headers()
        # Write the response content
        self.wfile.write(b"Hello, world!")

# Define the HTTP server class
class ThreadedHTTPServer(HTTPServer):
    # Override the process_request method to handle each request in a separate thread
    def process_request(self, request, client_address):
        # Create a new thread for each request
        t = threading.Thread(target=self.__new_request_thread, args=(request, client_address))
        # Start the thread
        t.start()

    # Method to handle each request in a separate thread
    def __new_request_thread(self, request, client_address):
        # Call the superclass's process_request method to handle the request
        super().process_request(request, client_address)

# Main function to run the server
def main():
    # Define the server address and port
    server_address = ('', 8000)
    # Create an instance of the threaded HTTP server
    httpd = ThreadedHTTPServer(server_address, SimpleHTTPRequestHandler)
    print("Server started on port 8000...")
    # Start serving HTTP requests
    httpd.serve_forever()

if __name__ == '__main__':
    main()