{"id":23541659,"url":"https://github.com/todd-cook/java-best-practices-ui","last_synced_at":"2025-04-23T19:20:28.360Z","repository":{"id":140565236,"uuid":"1663596","full_name":"todd-cook/Java-Best-Practices-UI","owner":"todd-cook","description":"Best practices for multithreaded UIs.","archived":false,"fork":false,"pushed_at":"2012-05-11T17:07:31.000Z","size":141,"stargazers_count":6,"open_issues_count":0,"forks_count":2,"subscribers_count":1,"default_branch":"master","last_synced_at":"2025-03-30T02:41:35.760Z","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":"bsd-3-clause","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/todd-cook.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":"2011-04-26T07:18:48.000Z","updated_at":"2019-08-05T06:41:54.000Z","dependencies_parsed_at":"2023-03-13T10:41:33.058Z","dependency_job_id":null,"html_url":"https://github.com/todd-cook/Java-Best-Practices-UI","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/todd-cook%2FJava-Best-Practices-UI","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/todd-cook%2FJava-Best-Practices-UI/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/todd-cook%2FJava-Best-Practices-UI/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/todd-cook%2FJava-Best-Practices-UI/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/todd-cook","download_url":"https://codeload.github.com/todd-cook/Java-Best-Practices-UI/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":250497090,"owners_count":21440254,"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","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-12-26T05:16:54.914Z","updated_at":"2025-04-23T19:20:28.327Z","avatar_url":"https://github.com/todd-cook.png","language":"Java","readme":"Java Best Practices UI\n======================\nA demonstration of best practices for Java multithreaded programming and user interfaces.\n\nWhy?\n\nFew developers write good multithreaded server code, and the state of multithreaded user\ninterface programming is even worse. The book, The \"Java Concurrency in Practice\" has an important\nchapter on multithreaded UI programming, however the examples and source files don't provide a\ncomplete, working example, so I distilled the ideas from the book into a complete, yet simple\nworking application example using adaptations of source code and ideas from:\n\"Concurrent Programming in Java\" by Brian Goetz, and \"Effective Java\" 2nd Edition by Joshua Bloch.\n\nWorking Demo Features:\n---------------------\n* Simple Computation with Cancel\n* Multiple Computations\n* Memoized Computations\n* Shutdown gracefull and exit\n\nTo Run the Demo:\n---------------\n* mvn package\n* cd target\n* java -jar Java-Best-Practices-UI-1.0-dist.jar\n\n\nImplementations of Java Concurrency in Practice concepts of:\n------------------------------------------------------------\n* ThreadPools\n* Logging Singleton\n* Executor Framework\n* Shutdown hook with an orderly shutdown of services\n* Examples of using the Executor and Completion services frameworks for responsiveness\nand cancelling a long running tasks\n\nImplementations of Effective Java features:\n------------------------------------------\n* Enum used as a singleton\n* Builder pattern\n* Generic collections, data structures\n\nOther Best Practices:\n--------------------\n* Using MigLayout to simplify Swing layouts\n* Initialization via System Properties\n* Use of FindBugs static analysis, Cobertura code coverage\n\nTODO \nUsing documents located in a package path of testing; e.g. XML validation\nLaunching Wizard - because you can't change the memory \u0026 thread sizing at runtime\nAbout screen with profile \u0026 application versioning information.","funding_links":[],"categories":[],"sub_categories":[],"project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Ftodd-cook%2Fjava-best-practices-ui","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Ftodd-cook%2Fjava-best-practices-ui","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Ftodd-cook%2Fjava-best-practices-ui/lists"}