thread_Synchronized(同步与互斥)

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();

    //创建线程2
    new 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();

    //创建线程2
    new 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();

    //创建线程2
    new 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
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值