package com.xxl.sso.sample.test;
public class ThreadTest implements Runnable {
private static String name;
private static int count = 100;
private static Object obj=new Object();
public ThreadTest(String name) {
this.name = name;
}
@Override
public void run() {
System.out.println(Thread.currentThread().getName() + "线程开始执行");
while (count > 0) {
try {
Thread.sleep(50);
} catch (InterruptedException e) {
e.printStackTrace();
}
if (count > 0) {
dec();
}
}
}
//synchronized关键字
/*public synchronized void dec() {
if (count > 0) {
System.out.println(Thread.currentThread().getName() + "当前线程第" + count + "次执行!");
count--;
}
}*/
//this同步代码
/*public void dec() {
synchronized (this.getClass()) {
if (count > 0) {
System.out.println(Thread.currentThread().getName() + "当前线程第" + count + "次执行!");
count--;
}
}
}*/
//类字节码同步代码
/*public void dec() {
synchronized (ThreadTest.class) {
if (count > 0) {
System.out.println(Thread.currentThread().getName() + "当前线程第" + count + "次执行!");
count--;
}
}
}*/
//对象锁同步代码
public void dec() {
synchronized (obj) {
if (count > 0) {
System.out.println(Thread.currentThread().getName() + "当前线程第" + count + "次执行!");
count--;
}
}
}
public static void main(String[] args) {
ThreadTest r1 = new ThreadTest("");
Thread t1 = new Thread(r1, "窗口1");
t1.start();
ThreadTest r2 = new ThreadTest("");
Thread t2 = new Thread(r2, "窗口2");
t2.start();
}
}