ich nicht in der Lage bin zu synchronisierenden Blöcke in Javasynchronisierten Block funktioniert nicht ganz richtig
ich diesen folgenden Beitrag lesen zu bekommen, aber habe ganz über syn-Blöcke und Schlösser nicht bekommen
Synchronized block not working
i nicht wissen, unter Code, warum nicht gleichförmige Anordnung von a, B, C-Schema ausgibt auch nachdem ich es synchronisiert ..
public class synchronizeblock
{
static StringBuffer s=new StringBuffer();
public static void main(String []args)
{
Threading t1=new Threading(s,'a');
Threading t2=new Threading(s,'b');
Threading t3=new Threading(s,'c');
t1.start();
t2.start();
t3.start();
}
}
class Threading extends Thread
{
StringBuffer sb;
char ch;
Threading()
{
}
Threading(StringBuffer sb,char ch)
{
this.sb=sb;
this.ch=ch;
}
public void run()
{
synchronized(this) // this(current instance) acts as lock ??
{
for(int i=0;i<20;++i)
{
System.out.print(ch);
}
}
}
}
eine von c Ases des Ausgangs ist wie folgt:
bbbbbbbbbbbbbaccccccccccccccccccccaaaaaaaaaaaaaaaaaaabbbbbbb
meine Sorge ist, dass, sobald ein Thread gestartet wird, sagt Faden mit Charakter ‚b‘ (sei es „ein“ thread-) sollte es nicht abgeschlossen sein, bevor ein anderer Thread Chance zu laufen wird, weil Thread „eins“ auf dem Objektsperre bekam, korrigieren sie mich falsch, wenn Uhr und ich habe folgende Fragen
es wirklich verwirrend „was wird gesperrt“ und „w Hut wirkt als Schloss ". So erklären, was genau in meinem Code gesperrt wurde
und was soll ich tun einheitliche Ausgabe zu erhalten (mit den Worten einheitliche Ausgabe hier, ich meine, dass, sobald ein Thread seinen Charakter beginnt sollte 20-mal gedruckt werden)
'synchronized' nimmt eine Sperre für das gegebene Objekt,' this' ist der Fall. Sie haben 3 verschiedene 'Threading'-Instanzen, also sperren sie 3 verschiedene Objekte, und da nichts anderes versucht, diese Objekte zu sperren, haben die Sperren keine Wirkung. – Andreas
Wenn Sie sagen, "habe das Objekt verriegelt", welches Objekt meinst du? –
@Andreas so betrachten synchronisiert (aaaa) so aaaa nicht als Sperre, sondern es wird gesperrt, korrigieren Sie mich, wenn ich falsch bin .... – viru