Hallo, ich habe folgendes Problem.
Vereinfacht habe ich genau ein Objekt, dass eine Methode zum "sanften abbruch" hat, also eine interrupt Methode, sowie eine weitere Methode die von mehreren Threads genutzt wird. Sobald die Interrupt Methode durchgefüht wird, soll die andere Methode nichtmehr durchgeführt werden. Dies könnte man ja durch eine einfache booleanabfrage lösen. Nun ist es allerdings möglich, dass das interrupt ausgeführt wird während sich ein Thread in der anderen Methode befindet und damit schon die boolean-Schranke überschritten hat.
Im Prinzip hätte ich gerne folgendes: Sobald die Methode interrupt ausgeführt wird, soll kein Thread mehr die andere Methode nutzen können (bzw. sie soll nichtmehr die ursprüngliche Wirkung haben). Um oben genannten Effekt zu vermeiden (Boolean-Schranke-Problem), wäre es folglich schön wenn sämtliche Threads, die sich in der Methode befinden diese zuenede führen, aber keine weiteren mehr zugelassen werden und erst dann die interrupt Methode vollständig ausgeführt wird, wenn alle in der Methode befindlichen Threadsa fertig sind. Dies könnte man ja im Prinzip erreichen indem man beide Methoden synchronized macht, allerdings verliere ich dann ja auch die parallelität auf der zweiten Methode, was unschön wäre.
Ich hoffe man kann das Problem nachvollziehen.
Vereinfacht habe ich genau ein Objekt, dass eine Methode zum "sanften abbruch" hat, also eine interrupt Methode, sowie eine weitere Methode die von mehreren Threads genutzt wird. Sobald die Interrupt Methode durchgefüht wird, soll die andere Methode nichtmehr durchgeführt werden. Dies könnte man ja durch eine einfache booleanabfrage lösen. Nun ist es allerdings möglich, dass das interrupt ausgeführt wird während sich ein Thread in der anderen Methode befindet und damit schon die boolean-Schranke überschritten hat.
Im Prinzip hätte ich gerne folgendes: Sobald die Methode interrupt ausgeführt wird, soll kein Thread mehr die andere Methode nutzen können (bzw. sie soll nichtmehr die ursprüngliche Wirkung haben). Um oben genannten Effekt zu vermeiden (Boolean-Schranke-Problem), wäre es folglich schön wenn sämtliche Threads, die sich in der Methode befinden diese zuenede führen, aber keine weiteren mehr zugelassen werden und erst dann die interrupt Methode vollständig ausgeführt wird, wenn alle in der Methode befindlichen Threadsa fertig sind. Dies könnte man ja im Prinzip erreichen indem man beide Methoden synchronized macht, allerdings verliere ich dann ja auch die parallelität auf der zweiten Methode, was unschön wäre.
Ich hoffe man kann das Problem nachvollziehen.