Re: Better RecursiveTask Example
Doug Lea via Concurrency-interest <[email protected]> Thu, 25 Nov 2021 13:40:24 -0500
| Newsgroups | gmane.comp.java.jsr.166-concurrency |
|---|---|
| Message-ID | <[email protected]> |
VGhhbmtzIGZvciB0aGUgY29tbWVudHMgYW5kIHN1Z2dlc3Rpb25zLiBIZXJlJ3MgcGFzcyAyLCB0 aGF0IHRyaWVzIHRvIApmaW5kIGEgYmV0dGVyIGNvbXByb21pc2UgYWNyb3NzIGNvbmNlcm5zLiBB bHNvIHBhc3RlZCBiZWxvdyB3aXRob3V0IHRoZSAKbGVhZGluZyAiKiJzIGluIGNhc2UgeW91J2Qg bGlrZSB0byBleHBlcmllbmNlIHRoZSBjb3B5LXBhc3RlLXJ1biB0aGF0IApwZW9wbGUgd2lsbCBi ZSBhYmxlIHRvIGRvLgoKIMKgKiA8cD5Gb3IgZXhhbXBsZSwgaGVyZSBpcyBhIHRhc2stYmFzZWQg cHJvZ3JhbSBmb3IgY29tcHV0aW5nIEZhY3RvcmlhbHM6CiDCoCoKIMKgKiA8cHJlPiB7QGNvZGUK IMKgKiBpbXBvcnQgamF2YS51dGlsLmNvbmN1cnJlbnQuUmVjdXJzaXZlVGFzazsKIMKgKiBpbXBv cnQgamF2YS5tYXRoLkJpZ0ludGVnZXI7CiDCoCogcHVibGljIGNsYXNzIEZhY3RvcmlhbCB7CiDC oCrCoMKgIHN0YXRpYyBjbGFzcyBGYWN0b3JpYWxUYXNrIGV4dGVuZHMgUmVjdXJzaXZlVGFzazxC aWdJbnRlZ2VyPiB7CiDCoCrCoMKgwqDCoCBwcml2YXRlIGZpbmFsIGludCBmcm9tLCB0bzsKIMKg KsKgwqDCoMKgIEZhY3RvcmlhbFRhc2soaW50IGZyb20sIGludCB0bykgeyB0aGlzLmZyb20gPSBm cm9tOyB0aGlzLnRvID0gdG87IH0KIMKgKsKgwqDCoMKgIHByb3RlY3RlZCBCaWdJbnRlZ2VyIGNv bXB1dGUoKSB7CiDCoCrCoMKgwqDCoMKgwqAgaWYgKGZyb20gPT0gdG8pIHvCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCAvLyBiYXNlIGNhc2UKIMKgKsKgwqDCoMKg wqDCoMKgwqAgcmV0dXJuIEJpZ0ludGVnZXIudmFsdWVPZihmcm9tKTsKIMKgKsKgwqDCoMKgwqDC oCB9IGVsc2UgaWYgKHRvIC0gZnJvbSA8IDIpIHvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgLy8g dG9vIHNtYWxsIHRvIApwYXJhbGxlbGl6ZQogwqAqwqDCoMKgwqDCoMKgwqDCoMKgIHJldHVybiAK QmlnSW50ZWdlci52YWx1ZU9mKGZyb20pLm11bHRpcGx5KEJpZ0ludGVnZXIudmFsdWVPZih0bykp OwogwqAqwqDCoMKgwqDCoMKgIH0gZWxzZSB7wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgLy8gc3BsaXQgaW4gaGFsZgogwqAqwqDC oMKgwqDCoMKgwqDCoCBpbnQgbWlkID0gZnJvbSArICh0byAtIGZyb20pIC8gMjsKIMKgKsKgwqDC oMKgwqDCoMKgwqAgRmFjdG9yaWFsVGFzayBsZWZ0VGFzayA9IG5ldyBGYWN0b3JpYWxUYXNrKGZy b20sIG1pZCk7CiDCoCrCoMKgwqDCoMKgwqDCoMKgIGxlZnRUYXNrLmZvcmsoKTvCoMKgwqDCoMKg wqDCoMKgIC8vIHBlcmZvcm0gYWJvdXQgaGFsZiB0aGUgd29yayBsb2NhbGx5CiDCoCrCoMKgwqDC oMKgwqDCoMKgIHJldHVybiBuZXcgRmFjdG9yaWFsVGFzayhtaWQgKyAxLCB0bykuY29tcHV0ZSgp CiDCoCrCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgLm11bHRpcGx5KGxlZnRUYXNrLmpv aW4oKSk7CiDCoCrCoMKgwqDCoMKgwqAgfQogwqAqwqDCoMKgwqAgfQogwqAqwqDCoCB9CiDCoCrC oMKgIHN0YXRpYyBCaWdJbnRlZ2VyIGZhY3RvcmlhbChpbnQgbikgeyAvLyB1c2VzIEZvcmtKb2lu UG9vbC5jb21tb25Qb29sKCkKIMKgKsKgwqDCoMKgIHJldHVybiAobiA8PSAxKSA/IEJpZ0ludGVn ZXIuT05FIDogbmV3IEZhY3RvcmlhbFRhc2soMSwgbikuaW52b2tlKCk7CiDCoCrCoMKgIH0KIMKg KsKgwqAgcHVibGljIHN0YXRpYyB2b2lkIG1haW4oU3RyaW5nW10gYXJncykgewogwqAqwqDCoMKg wqAgU3lzdGVtLm91dC5wcmludGxuKGZhY3RvcmlhbChJbnRlZ2VyLnBhcnNlSW50KGFyZ3NbMF0p KSk7CiDCoCrCoMKgIH0KIMKgKiB9fTwvcHJlPgoKCmltcG9ydCBqYXZhLnV0aWwuY29uY3VycmVu dC5SZWN1cnNpdmVUYXNrOwppbXBvcnQgamF2YS5tYXRoLkJpZ0ludGVnZXI7CnB1YmxpYyBjbGFz cyBGYWN0b3JpYWwgewogwqAgc3RhdGljIGNsYXNzIEZhY3RvcmlhbFRhc2sgZXh0ZW5kcyBSZWN1 cnNpdmVUYXNrPEJpZ0ludGVnZXI+IHsKIMKgwqDCoCBwcml2YXRlIGZpbmFsIGludCBmcm9tLCB0 bzsKIMKgwqDCoCBGYWN0b3JpYWxUYXNrKGludCBmcm9tLCBpbnQgdG8pIHsgdGhpcy5mcm9tID0g ZnJvbTsgdGhpcy50byA9IHRvOyB9CiDCoMKgwqAgcHJvdGVjdGVkIEJpZ0ludGVnZXIgY29tcHV0 ZSgpIHsKIMKgwqDCoMKgwqAgaWYgKHRvID09IGZyb20pIHvCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoCAvLyBiYXNlIGNhc2UKIMKgwqDCoMKgwqDCoMKgIHJldHVy biBCaWdJbnRlZ2VyLnZhbHVlT2YoZnJvbSk7CiDCoMKgwqDCoMKgIH0gZWxzZSBpZiAodG8gLSBm cm9tIDwgMikge8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCAvLyB0b28gc21hbGwgdG8gcGFyYWxs ZWxpemUKIMKgwqDCoMKgwqDCoMKgwqAgcmV0dXJuIEJpZ0ludGVnZXIudmFsdWVPZihmcm9tKS5t dWx0aXBseShCaWdJbnRlZ2VyLnZhbHVlT2YodG8pKTsKIMKgwqDCoMKgwqAgfSBlbHNlIHvCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oCAvLyBzcGxpdCBpbiBoYWxmCiDCoMKgwqDCoMKgwqDCoCBpbnQgbWlkID0gZnJvbSArICh0byAt IGZyb20pIC8gMjsKIMKgwqDCoMKgwqDCoMKgIEZhY3RvcmlhbFRhc2sgbGVmdFRhc2sgPSBuZXcg RmFjdG9yaWFsVGFzayhmcm9tLCBtaWQpOwogwqDCoMKgwqDCoMKgwqAgbGVmdFRhc2suZm9yaygp O8KgwqDCoMKgwqDCoMKgwqAgLy8gcGVyZm9ybSBhYm91dCBoYWxmIHRoZSB3b3JrIGxvY2FsbHkK IMKgwqDCoMKgwqDCoMKgIHJldHVybiBuZXcgRmFjdG9yaWFsVGFzayhtaWQgKyAxLCB0bykuY29t cHV0ZSgpCiDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIC5tdWx0aXBseShsZWZ0VGFzay5q b2luKCkpOwogwqDCoMKgwqDCoCB9CiDCoMKgwqAgfQogwqAgfQogwqAgc3RhdGljIEJpZ0ludGVn ZXIgZmFjdG9yaWFsKGludCBuKSB7IC8vIHVzZXMgRm9ya0pvaW5Qb29sLmNvbW1vblBvb2woKQog wqDCoMKgIHJldHVybiAobiA8PSAxKSA/IEJpZ0ludGVnZXIuT05FIDogbmV3IEZhY3RvcmlhbFRh c2soMSwgbikuaW52b2tlKCk7CiDCoCB9CiDCoCBwdWJsaWMgc3RhdGljIHZvaWQgbWFpbihTdHJp bmdbXSBhcmdzKSB7CiDCoMKgwqAgU3lzdGVtLm91dC5wcmludGxuKGZhY3RvcmlhbChJbnRlZ2Vy LnBhcnNlSW50KGFyZ3NbMF0pKSk7CiDCoCB9Cn0KCl9fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fCkNvbmN1cnJlbmN5LWludGVyZXN0IG1haWxpbmcgbGlzdApD b25jdXJyZW5jeS1pbnRlcmVzdEBjcy5vc3dlZ28uZWR1Cmh0dHA6Ly9jcy5vc3dlZ28uZWR1L21h aWxtYW4vbGlzdGluZm8vY29uY3VycmVuY3ktaW50ZXJlc3QK