package com.liuzd.ssm.thread;
public class ThreadDemo1 {
public static void main(String args[]) {
// Data data = new Data();
// Thread t1 = new Thread(data);
// Thread t2 = new Thread(data);
// t1.start();
// t2.start();
Data2 data2 = new Data2();
Thread t3 = new Thread(data2);
Thread t4 = new Thread(data2);
t3.start();
t4.start();
}
}
class Data implements Runnable {
private int i;
public synchronized void run() {// 函数同步加synchronized 实现多线程数据共享
int h;
for (int j = 1; j <= 10; j++) {
h = i + 1;
try {
Thread.sleep(1000);
} catch (InterruptedException e) {
e.printStackTrace();
}
i = h;
System.out.println(i);
}
}
}
class Data2 implements Runnable {
private int i;
public void run() {
int h;
for (int j = 1; j <= 10; j++) {
synchronized (this) {// 同步块,当前类的对象为锁
h = i + 1;
try {
Thread.sleep(1000);
} catch (InterruptedException e) {
e.printStackTrace();
}
i = h;
}
System.out.println(i);
}// 出同步块时释放锁的钥匙
}
}
public class ThreadDemo1 {
public static void main(String args[]) {
// Data data = new Data();
// Thread t1 = new Thread(data);
// Thread t2 = new Thread(data);
// t1.start();
// t2.start();
Data2 data2 = new Data2();
Thread t3 = new Thread(data2);
Thread t4 = new Thread(data2);
t3.start();
t4.start();
}
}
class Data implements Runnable {
private int i;
public synchronized void run() {// 函数同步加synchronized 实现多线程数据共享
int h;
for (int j = 1; j <= 10; j++) {
h = i + 1;
try {
Thread.sleep(1000);
} catch (InterruptedException e) {
e.printStackTrace();
}
i = h;
System.out.println(i);
}
}
}
class Data2 implements Runnable {
private int i;
public void run() {
int h;
for (int j = 1; j <= 10; j++) {
synchronized (this) {// 同步块,当前类的对象为锁
h = i + 1;
try {
Thread.sleep(1000);
} catch (InterruptedException e) {
e.printStackTrace();
}
i = h;
}
System.out.println(i);
}// 出同步块时释放锁的钥匙
}
}