{"id":17004848,"url":"https://github.com/clickermonkey/taskaroo","last_synced_at":"2025-08-21T07:42:28.486Z","repository":{"id":152212224,"uuid":"9776963","full_name":"ClickerMonkey/Taskaroo","owner":"ClickerMonkey","description":"A Java library that handles execution of tasks. Tasks can be executed sequentially, in parallel, or in any order. Tasks can be canceled at any point, and can be ran synchronously or asynchronously.","archived":false,"fork":false,"pushed_at":"2013-11-15T20:52:00.000Z","size":300,"stargazers_count":5,"open_issues_count":0,"forks_count":4,"subscribers_count":4,"default_branch":"master","last_synced_at":"2025-08-05T15:53:25.139Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":"","language":"Java","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"osl-3.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/ClickerMonkey.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE.txt","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null}},"created_at":"2013-04-30T18:12:53.000Z","updated_at":"2021-04-08T05:28:16.000Z","dependencies_parsed_at":"2023-04-09T12:14:53.877Z","dependency_job_id":null,"html_url":"https://github.com/ClickerMonkey/Taskaroo","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/ClickerMonkey/Taskaroo","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ClickerMonkey%2FTaskaroo","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ClickerMonkey%2FTaskaroo/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ClickerMonkey%2FTaskaroo/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ClickerMonkey%2FTaskaroo/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/ClickerMonkey","download_url":"https://codeload.github.com/ClickerMonkey/Taskaroo/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ClickerMonkey%2FTaskaroo/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":271446919,"owners_count":24761423,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","status":"online","status_checked_at":"2025-08-21T02:00:08.990Z","response_time":74,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":[],"created_at":"2024-10-14T04:44:36.536Z","updated_at":"2025-08-21T07:42:28.460Z","avatar_url":"https://github.com/ClickerMonkey.png","language":"Java","readme":"taskaroo\n========\n\n![Stable](http://i4.photobucket.com/albums/y123/Freaklotr4/stage_stable.png)\n\nA Java library that handles execution of tasks. Tasks can be executed sequentially, in parallel, or in any order.\n\n**Features**\n- Tasks are completely thread safe\n- Tasks can be canceled before they are ran and even while (if supported).\n- Tasks can be invoked synchronously (blocks until result is returned) and can have a timeout.\n- Tasks can be invoked asynchronously (non-blocking)\n- Tasks can be grouped and executed in any order (TaskSet)\n- Tasks can be grouped and executed in insertion order (TaskList)\n- Tasks can be grouped and executed simultaneously (TaskGroup)\n- Tasks can be forked to be ran in a separate context\n\n**Documentation**\n- [JavaDoc](http://gh.magnos.org/?r=http://clickermonkey.github.com/Taskaroo/)\n\n**Example**\n\n```java\n// A task to search a massive haystack for the first occurrence of needle.\npublic class SearchTask extends Task\u003cInteger\u003e {\n    private String needle, haystack;\n    public SearchTask(String needle, String haystack) {\n        this.needle = needle;\n        this.haystack = haystack;\n    }\n    protected Integer execute() {\n        return haystack.indexOf(needle);\n    }\n}\n\n// Create a service for performing the tasks.\nTaskService service = new TaskService();\nservice.start();\n\n// Create the search task and set the service which will execute it.\nSearchTask task = new SearchTask(\"o\", \"Hello World\");\ntask.setHandler(service);\n// Wait no longer then a second when synchronously invoking.\ntask.setTimeout(1000);\n\n// Execute the task asynchronously.\ntask.async(new TaskListener\u003cInteger\u003e() {\n    public void onTaskTimeout(Task\u003cInteger\u003e source) {\n        // Task timed out (took more than a second).\n    }\n    public void onTaskSuccess(Task\u003cInteger\u003e source, Integer result) {\n        // Task was a success and no errors were thrown.\n    }\n    public void onTaskFinish(Task\u003cInteger\u003e source) {\n        // Task has completed in some manor.\n    }\n    public void onTaskError(Task\u003cInteger\u003e source, Throwable error) {\n        // Task produced an error (NullPointerException?)\n    }\n    public void onTaskCancel(Task\u003cInteger\u003e source) {\n        // Task cancelled before it ever finished.\n    }\n});\n\n// Execute task synchronously (could timeout if it takes more than a second).\nInteger result = task.sync();\n\n// Stop handling tasks.\nservice.stop();\n```\n\n**Builds**\n- [taskaroo-1.0.0.jar](http://gh.magnos.org/?r=https://github.com/ClickerMonkey/Taskaroo/blob/master/build/taskaroo-1.0.0.jar?raw=true)\n- [taskaroo-src-1.0.0.jar](http://gh.magnos.org/?r=https://github.com/ClickerMonkey/Taskaroo/blob/master/build/taskaroo-src-1.0.0.jar?raw=true) *- includes source code*\n- [taskaroo-all-1.0.0.jar](http://gh.magnos.org/?r=https://github.com/ClickerMonkey/Taskaroo/blob/master/build/taskaroo-1.0.0.jar?raw=true) *- includes all dependencies*\n- [taskaroo-all-src-1.0.0.jar](http://gh.magnos.org/?r=https://github.com/ClickerMonkey/Taskaroo/blob/master/build/taskaroo-src-1.0.0.jar?raw=true) *- includes all dependencies and source code*\n\n**Projects using taskaroo:**\n- [falcon](http://gh.magnos.org/?r=https://github.com/ClickerMonkey/Falcon)\n\n**Dependencies**\n- [surfice](http://gh.magnos.org/?r=https://github.com/ClickerMonkey/Surfice)\n- [zource](http://gh.magnos.org/?r=https://github.com/ClickerMonkey/Zource)\n- [curity](http://gh.magnos.org/?r=https://github.com/ClickerMonkey/Curity)\n- [testility](http://gh.magnos.org/?r=https://github.com/ClickerMonkey/Testility) *for unit tests*\n\n**Testing Examples**\n- [Testing/org/magnos/task](http://gh.magnos.org/?r=https://github.com/ClickerMonkey/Taskaroo/tree/master/Testing/org/magnos/task)\n","funding_links":[],"categories":[],"sub_categories":[],"project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fclickermonkey%2Ftaskaroo","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fclickermonkey%2Ftaskaroo","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fclickermonkey%2Ftaskaroo/lists"}