/**
* @author hankun
* @create 2017-07-05 19:52
*/
public class synchronizedTest {
/**
* 同步线程,修饰方法块
*/
static class SyncMehtodBlock implements Runnable {
private static int count;
public SyncMehtodBlock() {
count = 0;
}
public void run() {
synchronized (this) {
System.out.println(Thread.currentThread().getName() + "开始..SyncMehtodBlock");
try {
Thread.sleep(1000);
} catch (InterruptedException e) {
e.printStackTrace();
}
System.out.println(Thread.currentThread().getName() + "结束..SyncMehtodBlock");
}
}
}
/**
* 同步线程,修饰方法
*/
static class SyncMehtod extends Thread {
private synchronizedTest syn;
public SyncMehtod(synchronizedTest synchronizedTest) {
this.syn = synchronizedTest;
}
public void run() {
syn.test();
}
}
public synchronized void test() {
System.out.println(Thread.currentThread().getName() + "开始..SyncMehtod");
try {
Thread.sleep(1000);
} catch (InterruptedException e) {
e.printStackTrace();
}
System.out.println(Thread.currentThread().getName() + "结束..SyncMehtod");
}
/**
* 同步线程,修饰静态方法
*/
static class SyncStaticMehtod extends Thread {
public synchronized static void staticTest() {
System.out.println(Thread.currentThread().getName() + "开始..SyncStaticMehtod");
try {
Thread.sleep(1000);
} catch (InterruptedException e) {
e.printStackTrace();
}
System.out.println(Thread.currentThread().getName() + "结束..SyncStaticMehtod");
}
public void run() {
staticTest();
}
}
/**
* 同步线程,修饰类
*/
static class SyncClass extends Thread {
public void classTest() {
synchronized (synchronizedTest.class) {
System.out.println(Thread.currentThread().getName() + "开始..SyncClass");
try {
Thread.sleep(1000);
} catch (InterruptedException e) {
e.printStackTrace();
}
System.out.println(Thread.currentThread().getName() + "结束..SyncClass");
}
}
public void run() {
classTest();
}
}
public static void main(String[] args) {
//情况1,修饰方法块
SyncMehtodBlock syncMehtodBlock = new SyncMehtodBlock();
Thread thread1 = new Thread(syncMehtodBlock, "syncMehtodBlock1");
Thread thread2 = new Thread(syncMehtodBlock, "syncMehtodBlock2");
thread1.start();
thread2.start();
//情况2,修饰方法
synchronizedTest syn = new synchronizedTest();
SyncMehtod syncMehtod3 = new SyncMehtod(syn);
SyncMehtod syncMehtod4 = new SyncMehtod(syn);
syncMehtod3.start();
syncMehtod4.start();
//情况3,修饰静态方法
SyncStaticMehtod a = new SyncStaticMehtod();
SyncStaticMehtod b = new SyncStaticMehtod();
Thread thread5 = new Thread(a, "SyncStaticMehtod1");
Thread thread6 = new Thread(b, "SyncStaticMehtod2");
thread5.start();
thread6.start();
//情况4,修饰类
SyncClass c = new SyncClass();
SyncClass d = new SyncClass();
Thread thread7 = new Thread(c, "SyncClass1");
Thread thread8 = new Thread(d, "SyncClass2");
thread7.start();
thread8.start();
}
}