代码1如下:
package com.yc.texing.thread;
/**
* @author
* @createDate 2018年8月8日 下午5:26:23
* 三个线程产生三个对象
*/
class Sync{
public void test(){
synchronized(this){
System.out.println("test开始..");
try{
Thread.sleep(1000);
}catch(InterruptedException e){
e.printStackTrace();
}
System.out.println("test结束..");
}
}
}
class MyThread extends Thread{
public void run (){
Sync s = new Sync();
s.test();
}
}
public class SyncObjectOrDm {
public static void main(String[] args) {
for(int i = 0; i < 3; i++){
Thread r = new MyThread();
r.start();
}
}
}
输出:
test开始..
test开始..
test开始..
test结束..
test结束..
test结束..
代码2:
package com.yc.texing.thread;
/**
* @author
* @createDate 2018年8月8日 下午5:26:23
* 三个线程产生三个对象
*/
class Sync2{
public void test(){
synchronized(this){
System.out.println("test开始..");
try{
Thread.sleep(1000);
}catch(InterruptedException e){
e.printStackTrace();
}
System.out.println("test结束..");
}
}
}
class MyThread2 extends Thread{
private Sync2 sync;
public MyThread2(Sync2 sync){
this.sync = sync;
}
public void run (){
sync.test();
}
}
public class SyncObjectOrDm2 {
public static void main(String[] args) {
Sync2 sync = new Sync2();
for(int i = 0; i < 3; i++){
Thread r = new MyThread2(sync);
r.start();
}
}
}
输出:
test开始..
test结束..
test开始..
test结束..
test开始..
test结束..