{"action":"created","issue":{"url":"https://api.github.com/repos/reactive-streams/reactive-streams-jvm/issues/274","labels_url":"https://api.github.com/repos/reactive-streams/reactive-streams-jvm/issues/274/labels{/name}","comments_url":"https://api.github.com/repos/reactive-streams/reactive-streams-jvm/issues/274/comments","events_url":"https://api.github.com/repos/reactive-streams/reactive-streams-jvm/issues/274/events","html_url":"https://github.com/reactive-streams/reactive-streams-jvm/issues/274","id":88815761,"number":274,"title":"Can Subscriber assume all methods are externally synchronized?","user":{"login":"maxwindiff","id":375276,"avatar_url":"https://avatars.githubusercontent.com/u/375276?v=3","gravatar_id":"","url":"https://api.github.com/users/maxwindiff","html_url":"https://github.com/maxwindiff","followers_url":"https://api.github.com/users/maxwindiff/followers","following_url":"https://api.github.com/users/maxwindiff/following{/other_user}","gists_url":"https://api.github.com/users/maxwindiff/gists{/gist_id}","starred_url":"https://api.github.com/users/maxwindiff/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/maxwindiff/subscriptions","organizations_url":"https://api.github.com/users/maxwindiff/orgs","repos_url":"https://api.github.com/users/maxwindiff/repos","events_url":"https://api.github.com/users/maxwindiff/events{/privacy}","received_events_url":"https://api.github.com/users/maxwindiff/received_events","type":"User","site_admin":false},"labels":[],"state":"open","locked":false,"assignee":null,"milestone":null,"comments":8,"created_at":"2015-06-16T19:23:33Z","updated_at":"2015-06-24T09:43:20Z","closed_at":null,"body":"Rule 1.3 says \"onSubscribe, onNext, onError and onComplete signaled to a Subscriber MUST be signaled sequentially (no concurrent notifications).\" Does it imply these methods are externally synchronized? Say if I have this `Subscriber`:\r\n\r\n```java\r\nclass MySubscriber implements Subscriber<String> {\r\n    private final StringBuilder sb = new StringBuilder();\r\n    public void onNext(String msg) {\r\n        sb.append(msg); // here\r\n    }\r\n    ...\r\n}\r\n```\r\n\r\nIs it safe to access the `StringBuilder` without synchronization?\r\n\r\nAnd does the jsr166 version amount to the same thing?\r\n> http://gee.cs.oswego.edu/dl/jsr166/dist/docs/java/util/concurrent/Flow.Subscriber.html \r\n> public static interface Flow.Subscriber<T>\r\n> A receiver of messages. The methods in this interface are invoked in strict sequential order for each Flow.Subscription."},"comment":{"url":"https://api.github.com/repos/reactive-streams/reactive-streams-jvm/issues/comments/114808025","html_url":"https://github.com/reactive-streams/reactive-streams-jvm/issues/274#issuecomment-114808025","issue_url":"https://api.github.com/repos/reactive-streams/reactive-streams-jvm/issues/274","id":114808025,"user":{"login":"viktorklang","id":10871,"avatar_url":"https://avatars.githubusercontent.com/u/10871?v=3","gravatar_id":"","url":"https://api.github.com/users/viktorklang","html_url":"https://github.com/viktorklang","followers_url":"https://api.github.com/users/viktorklang/followers","following_url":"https://api.github.com/users/viktorklang/following{/other_user}","gists_url":"https://api.github.com/users/viktorklang/gists{/gist_id}","starred_url":"https://api.github.com/users/viktorklang/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/viktorklang/subscriptions","organizations_url":"https://api.github.com/users/viktorklang/orgs","repos_url":"https://api.github.com/users/viktorklang/repos","events_url":"https://api.github.com/users/viktorklang/events{/privacy}","received_events_url":"https://api.github.com/users/viktorklang/received_events","type":"User","site_admin":false},"created_at":"2015-06-24T09:43:20Z","updated_at":"2015-06-24T09:43:20Z","body":"@maxwindiff Hi Max, what's the status here?"}}