The main issue for reuse at the object level is that concurrency in an object-oriented language should not diminish the benefits of object-based features with respect to reuse. For instance, encapsulation should still protect the internal state of objects from surrounding objects and it should still be possible to insulate objects’ clients from implementation choices. [...]
Continue reading about Criteria for Evaluating Language Design Choices