一、多锁多线程
-
概念:
多个线程,每个线程都可以拿到自己指定的锁,分别获得锁之后,执行synchronized方法体的内容。 -
例子:
synchronized取得的锁都是对象锁,而不是把一段代码(方法)当做锁,所以哪个线程先执行synchronized关键字的方法,哪个线程就持有该方法所属对象的锁(Lock)。当是两个对象时,线程获得的就是两个不同的锁,它们之间是互不影响的。
package com.Thread.Sychronized;
public class many_Thread {
private int state=0;
public synchronized void name(String str) {
try {
if(str.equals("A"))
{
state=100;
System.out.println("A");
Thread.sleep(400);
}
else
{
state=200;
System.out.println("B");
Thread.sleep(200);
}
System.out.println("str: "+str+" state:"+state);
}catch (InterruptedException e) {
e.printStackTrace();
}
}
public static void main(String[] args) {
// TODO Auto-generated method stub
final many_Thread m1=new many_Thread();
final