thread_Synchronized(同步与互斥)

来源:互联网 发布:淘宝网肚皮舞服装新款 编辑:程序博客网 时间:2024/06/08 13:16

package com.gzhs.zsd.thread;

/*
* 多线程同步互斥
* @author 谢泽鹏
* @version 1.0
*/
public class Traditional_Synchronized {

public static void main(String[] args) {

 //测试普通线程1 //new MySynchronizedThread().More_Thread1(); //多线程同步1 //new MySynchronizedThread().More_Thread2(); //多线程同步2 //new MySynchronizedThread().More_Thread3();

}

/*
*
* @方法名称:More_Thread1
* @描述:普通模式 出现状况: 线程xxx调度outprint。 未完成此调度时,程序执行新的线程。
* @作者: 谢泽鹏
* @创建日期: 2012-5-8
* @参数:
*/
public void More_Thread1()
{
final MyPrint1 myPrint = new MyPrint1();
//创建线程1
new Thread(new Runnable() {
@Override
public void run() {
while(true){
try {
Thread.sleep(1000);
myPrint.outprint(“My Name is xiezepeng!”);
} catch (InterruptedException e) {
e.printStackTrace();
System.err.println(e.getMessage());
}
}
}
}).start();

//创建线程2new Thread(new Runnable() {   @Override   public void run() {     while(true){     try {      Thread.sleep(1000);       myPrint.outprint("My Name is suenpeng!");     } catch (InterruptedException e) {      e.printStackTrace();      System.err.println(e.getMessage());     }       }   }    }).start();

}

//内部类
class MyPrint1{

 public void outprint(String name) {  for(int i = 0; i < name.length(); i++){   System.out.print(name.charAt(i));  }  System.out.println(); }

}

/*
*
* @方法名称:More_Thread2
* @描述: 多线程同步方式1
* @作者: 谢泽鹏
* @创建日期: 2012-5-8
* @参数:
*/
public void More_Thread2()
{
final MyPrint2 myPrint = new MyPrint2();
//创建线程1
new Thread(new Runnable() {
@Override
public void run() {
while(true){
try {
Thread.sleep(1000);
myPrint.outprint(“My Name is xiezepeng!”);
} catch (InterruptedException e) {
e.printStackTrace();
System.err.println(e.getMessage());
}
}
}
}).start();

//创建线程2new Thread(new Runnable() {

@Override
public void run() {
while(true){
try {
Thread.sleep(1000);
myPrint.outprint(“My Name is suenpeng!”);
} catch (InterruptedException e) {
e.printStackTrace();
System.err.println(e.getMessage());
}
}

}
}).start();
}

//内部类
class MyPrint2{

 public void outprint(String name) {  //同步 (参数表示同一个对象)  //加上synchronized关键词, 参数表示同一个对象,  //此时在多线程中, 即表示该线程完毕后,在执行新的线程。  synchronized (this) {   for(int i = 0; i < name.length(); i++){    System.out.print(name.charAt(i));   }   System.out.println();  } }

}

/*
*
* @方法名称:More_Thread3
* @描述: 多线程同步方式2
* @作者: 谢泽鹏
* @创建日期: 2012-5-8
* @参数:
*/
public void More_Thread3()
{
final MyPrint3 myPrint = new MyPrint3();
//创建线程1
new Thread(new Runnable() {
@Override
public void run() {
while(true){
try {
Thread.sleep(1000);
myPrint.outprint(“My Name is xiezepeng!”);
} catch (InterruptedException e) {
e.printStackTrace();
System.err.println(e.getMessage());
}
}
}
}).start();

//创建线程2new Thread(new Runnable() {

@Override
public void run() {
while(true){
try {
Thread.sleep(1000);
myPrint.outprint(“My Name is suenpeng!”);
} catch (InterruptedException e) {
e.printStackTrace();
System.err.println(e.getMessage());
}
}

}
}).start();
}

//内部类
class MyPrint3{

 //该方法加上同步关键词修饰,即标识该同步与当前对象, 即this对象 //此时在多线程中, 即表示该线程完毕后,在执行新的线程。 public synchronized void outprint(String name) {for(int i = 0; i < name.length(); i++){   System.out.print(name.charAt(i));}System.out.println(); }

}
}

0 0
原创粉丝点击