module Main where
import concurrent.Executors
import concurrent.ExecutorService
import concurrent.Future
main :: IO ()
main = do
executor <- Executors.newFixedThreadPool 5
future1 <- submitTask executor "Task 1"
future2 <- submitTask executor "Task 2"
result1 <- getResult future1
result2 <- getResult future2
putStrLn "Task 1 result:"
print result1
putStrLn "Task 2 result:"
print result2
Executors.shutdown executor
submitTask :: ExecutorService -> String -> IO (Future String)
submitTask executor task = do
future <- Executors.submit executor $ do
putStrLn $ "Executing task: " ++ task
return task
return future
getResult :: Future a -> IO a
getResult future = do
result <- Future.get future
return result