Internal and External Token-Based Synchronization in Object-Oriented Languages

  • Franz Puntigam
Conference paper
Part of the Lecture Notes in Computer Science book series (LNCS, volume 4228)


We expect interfaces in programming languages to expose essential parts of the objects’ internal synchronization as well as required external synchronization. Clients need this information to provide required and avoid conflicting synchronization. We propose a mixed static and dynamic token-based approach to uniformly specify internal and external synchronization in a simplified Java-like language. This concept gives us much flexibility on token management, ensures race-free programs without any need for complete aliasing information, and supports static type checking of synchronization using a rich notion of subtyping.


Token Pool Atomic Action Synchronization Condition Instance Variable Method Invocation 
These keywords were added by machine and not by the authors. This process is experimental and the keywords may be updated as the learning algorithm improves.


Unable to display preview. Download preview PDF.

Unable to display preview. Download preview PDF.


  1. 1.
    Puntigam, F.: Coordination requirements expressed in types for active objects. In: Aksit, M., Matsuoka, S. (eds.) ECOOP 1997. LNCS, vol. 1241, pp. 367–388. Springer, Heidelberg (1997)CrossRefGoogle Scholar
  2. 2.
    Puntigam, F.: Concurrent Object-Oriented Programming with Process Types. Der Andere Verlag, Osnabrück (2000)Google Scholar
  3. 3.
    Puntigam, F.: Client and server synchronization expressed in types. In: Proceedings of the OOPSLA 2005 Workshop on Synchronization and Concurrency in Object-Oriented Languages (SCOOL), San Diego, USA (2005)Google Scholar
  4. 4.
    Liskov, B., Wing, J.M.: Specifications and their use in defining subtypes. ACM SIGPLAN Notices 28, 16–28 (1993); Proceedings OOPSLA 1993CrossRefGoogle Scholar
  5. 5.
    Wegner, P., Zdonik, S.B.: Inheritance as an incremental modification mechanism or what like is and isn’t like. In: Gjessing, S., Nygaard, K. (eds.) ECOOP 1988. LNCS, vol. 322, pp. 55–77. Springer, Heidelberg (1988)CrossRefGoogle Scholar
  6. 6.
    Brinch-Hansen, P.: The programming language Concurrent Pascal. IEEE Transactions on Software Engineering 1, 199–207 (1975)Google Scholar
  7. 7.
    Hoare, C.A.R.: Communicating sequential processes. Communications of the ACM 21, 666–677 (1978)MATHCrossRefGoogle Scholar
  8. 8.
    Harris, T., Fraser, K.: Language support for leightweight transactions. In: OOPSLA 1993, Anaheim, California, USA, pp. 388–402. ACM, New York (2003)Google Scholar
  9. 9.
    Liskov, B., Scheifler, R.: Guardians and actions: Linguistic support for robust, distributed programs. ACM Transactions on Programming Languages and Systems 5, 381–404 (1983)MATHCrossRefGoogle Scholar
  10. 10.
    Murata, T.: Petri nets: Properties, analysis and applications. Proceedings of the IEEE 77, 541–580 (1989)CrossRefGoogle Scholar
  11. 11.
    DeLine, R., Fähndrich, M.: The fugue protocol checker: Is your software baroque? Technical report, Microsoft Research (2004),
  12. 12.
    Kobayashi, N., Pierce, B., Turner, D.: Linearity and the pi-calculus. ACM Transactions on Programming Languages and Systems 21, 914–947 (1999)CrossRefGoogle Scholar
  13. 13.
    Najm, E., Nimour, A.: A calculus of object bindings. In: Proceedings FMOODS 1997, Canterbury, United Kingdom. Chapman and Hall, Boca Raton (1997)Google Scholar
  14. 14.
    Puntigam, F.: Type specifications with processes. In: Proceedings FORTE 1995, Montreal, Canada, IFIP WG 6.1. Chapman & Hall, Boca Raton (1995)Google Scholar
  15. 15.
    Meyer, B.: Eiffel: The Language. Prentice-Hall, Englewood Cliffs (1992)MATHGoogle Scholar
  16. 16.
    Caromel, D.: Toward a method of object-oriented concurrent programming. Communications of the ACM 36, 90–101 (1993)CrossRefGoogle Scholar
  17. 17.
    Meyer, B.: Systematic concurrent object-oriented programming. Communications of the ACM 36, 56–80 (1993)CrossRefGoogle Scholar
  18. 18.
    ISO/IEC 8652:1995: Annotated ada reference manual. Intermetrics, Inc. (1995)Google Scholar
  19. 19.
    Bacon, D.F., Strom, R.E., Tarafdar, A.: Guava: A dialect of Java without data races. In: OOPSLA 2000 (2000)Google Scholar
  20. 20.
    Flanagan, F., Abadi, M.: Types for safe locking. In: Swierstra, S.D. (ed.) ESOP 1999. LNCS, vol. 1576, p. 91. Springer, Heidelberg (1999)CrossRefGoogle Scholar
  21. 21.
    Choi, J.D., Gupta, M., Serrano, M., Sreedhar, V.C., Midkiff, S.: Escape analysis for Java. In: OOPSLA 1999, Denver, Colorado (1999)Google Scholar
  22. 22.
    von Praun, C., Gross, T.R.: Static conflict analysis for multi-threaded object-oriented programs. In: PLDI 2003, pp. 115–128. ACM Press, New York (2003)CrossRefGoogle Scholar
  23. 23.
    Agha, G., Mason, I.A., Smith, S., Talcott, C.: Towards a theory of actor computation. In: Cleaveland, W.R. (ed.) CONCUR 1992. LNCS, vol. 630, pp. 565–579. Springer, Heidelberg (1992)CrossRefGoogle Scholar
  24. 24.
    Meyer, B.: Object-Oriented Software Construction, 2nd edn. Prentice-Hall, Englewood Cliffs (1997)MATHGoogle Scholar
  25. 25.
    Arbab, F.: Abstract behavior types: A foundation model for components and their composition. Science of Computer Programming 55, 3–52 (2005)MATHCrossRefMathSciNetGoogle Scholar
  26. 26.
    Lee, E.A., Xiong, Y.: A behavioral type system and its application in Ptolemy II. Formal Aspects of Computing 16, 210–237 (2004)MATHCrossRefGoogle Scholar
  27. 27.
    Nierstrasz, O.: Regular types for active objects. In: Proceedings OOPSLA 1993. ACM SIGPLAN Notices, vol. 28, pp. 1–15 (1993)Google Scholar
  28. 28.
    Nielson, F., Nielson, H.R.: From CML to process algebras. In: Best, E. (ed.) CONCUR 1993. LNCS, vol. 715, pp. 493–508. Springer, Heidelberg (1993)Google Scholar
  29. 29.
    Colaco, J.-L., Pantel, M., Salle, P.: A set-constraint-based analysis of actors. In: Proceedings FMOODS 1997, Canterbury, United Kingdom. Chapman and Hall, Boca Raton (1997)Google Scholar
  30. 30.
    Ravara, A., Vasconcelos, V.T.: Behavioural types for a calculus of concurrent objects. In: Lengauer, C., Griebl, M., Gorlatch, S. (eds.) Euro-Par 1997. LNCS, vol. 1300, pp. 554–561. Springer, Heidelberg (1997)CrossRefGoogle Scholar
  31. 31.
    Benton, N., Cardelli, L., Fournet, C.: Modern concurrency abstractions for C#. ACM Transactions on Programming Languages and Systems 26, 269–804 (2004)CrossRefGoogle Scholar
  32. 32.
    Drossopoulou, S., Petrounias, A., Buckley, A., Eisenbach, S.: School: A small chorded object-oriented language. In: Proceedings of ICALP Workshop on Developments in Computational Models (2005)Google Scholar
  33. 33.
    Odersky, M.: Functional nets. In: Proceedings of the European Symposium on Programming. Springer, Heidelberg (2000)Google Scholar
  34. 34.
    Fournet, C., Gonthier, G.: The reflexive cham and the join-calculus. In: Proceedings of the 23rd ACM Symposium on Principles of Programming Languages, pp. 372–385 (1996)Google Scholar

Copyright information

© Springer-Verlag Berlin Heidelberg 2006

Authors and Affiliations

  • Franz Puntigam
    • 1
  1. 1.Institut für ComputersprachenTechnische Universität WienViennaAustria

Personalised recommendations