{"id":4102,"date":"2018-03-04T21:07:04","date_gmt":"2018-03-04T19:07:04","guid":{"rendered":"http:\/\/www.tutego.de\/blog\/javainsel\/?p=4102"},"modified":"2018-03-04T21:07:04","modified_gmt":"2018-03-04T19:07:04","slug":"warum-ein-lambda-ausdruck-keine-lokale-variablen-parametervariablen-beschreiben-kann","status":"publish","type":"post","link":"https:\/\/www.tutego.de\/blog\/javainsel\/2018\/03\/warum-ein-lambda-ausdruck-keine-lokale-variablen-parametervariablen-beschreiben-kann\/","title":{"rendered":"Warum ein Lambda-Ausdruck keine lokale Variablen\/Parametervariablen beschreiben kann"},"content":{"rendered":"<p>Lambda-Ausdr\u00fccke k\u00f6nnen lokale Variablen nur lesen und nicht beschreiben. Der Grund hat etwas mit der Art und Weise zu tun, wo Variablen gespeichert werden: Objekt- und statische Variablen \u201eleben\u201c auf dem Heap lokale Variablen und Parameter \u201eleben\u201c auf dem Stack. Wenn nun Threads ins Spiel kommen ist es nicht un\u00fcblich, dass unterschiedliche Threads die Variablen vom Heap nutzen; daf\u00fcr gibt es Synchronisationsm\u00f6glichkeiten. Allerdings kann ein Thread nicht auf lokale Variablen eines anderen Threads zugreifen, denn ein Thread hat erst einmal keinen Zugriff auf den Stack-Speicher eines anderen Threads. Grunds\u00e4tzlich w\u00e4re das m\u00f6glich, allerdings wollten die Oracle-Entwickler diesen Pfad nicht gehen. Beim Lesezugriff wird tats\u00e4chlich eine Kopie angelegt, sodass sie f\u00fcr einen anderen Thread sichtbar ist.<\/p>\n<p>Die Einschr\u00e4nkung, dass \u00e4u\u00dfere lokale Variablen von Lambda-Ausdr\u00fccken nur gelesen werden k\u00f6nnen, ist an sich etwas Gutes, denn die Beschr\u00e4nkung minimiert Fehler bei nebenl\u00e4ufiger Ausf\u00fchrung von Lambda-Ausdr\u00fccken: arbeiten mehrere Threads Lambda-Ausdr\u00fccke ab, und beschreiben diese eine lokale Variable, m\u00fcsste andernfalls eine Thread-Synchronisation her.<\/p>\n<p>Grunds\u00e4tzlich verbietet das Schreiben von lokalen Variablen aus Lambda-Ausdr\u00fccken heraus aber nicht jede Programmiersprache. In C# kann ein Lambda-Ausdruck lokale Variablen beschreiben, sie leben dann nicht mehr auf dem Stack.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Lambda-Ausdr\u00fccke k\u00f6nnen lokale Variablen nur lesen und nicht beschreiben. Der Grund hat etwas mit der Art und Weise zu tun, wo Variablen gespeichert werden: Objekt- und statische Variablen \u201eleben\u201c auf dem Heap lokale Variablen und Parameter \u201eleben\u201c auf dem Stack. Wenn nun Threads ins Spiel kommen ist es nicht un\u00fcblich, dass unterschiedliche Threads die Variablen [&hellip;]<\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"_jetpack_memberships_contains_paid_content":false,"footnotes":"","_links_to":"","_links_to_target":""},"categories":[11],"tags":[],"class_list":["post-4102","post","type-post","status-publish","format-standard","hentry","category-insel"],"jetpack_featured_media_url":"","jetpack_sharing_enabled":true,"_links":{"self":[{"href":"https:\/\/www.tutego.de\/blog\/javainsel\/wp-json\/wp\/v2\/posts\/4102","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.tutego.de\/blog\/javainsel\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.tutego.de\/blog\/javainsel\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.tutego.de\/blog\/javainsel\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/www.tutego.de\/blog\/javainsel\/wp-json\/wp\/v2\/comments?post=4102"}],"version-history":[{"count":1,"href":"https:\/\/www.tutego.de\/blog\/javainsel\/wp-json\/wp\/v2\/posts\/4102\/revisions"}],"predecessor-version":[{"id":4103,"href":"https:\/\/www.tutego.de\/blog\/javainsel\/wp-json\/wp\/v2\/posts\/4102\/revisions\/4103"}],"wp:attachment":[{"href":"https:\/\/www.tutego.de\/blog\/javainsel\/wp-json\/wp\/v2\/media?parent=4102"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.tutego.de\/blog\/javainsel\/wp-json\/wp\/v2\/categories?post=4102"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.tutego.de\/blog\/javainsel\/wp-json\/wp\/v2\/tags?post=4102"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}