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