java多线程加锁

来源:互联网 发布:数据库substring 编辑:程序博客网 时间:2024/04/30 02:46
package com.zhlk.thread;public class TraditionalThreadSync {/** * 创建日期:2017-3-4下午10:53:49 作者:lvguanghui */public static void main(String[] args) {        new TraditionalThreadSync().init();}    private void init(){    final Outputer output=new Outputer();     new Thread(new Runnable() {  @Override public void run() {  while(true){  try { Thread.sleep(500); } catch (InterruptedException e) { // TODO Auto-generated catch block e.printStackTrace(); }                    output.output3("lvguanghui");   }   } }).start();  new Thread(new Runnable() { @Overridepublic void run() { while(true){ try {Thread.sleep(500);} catch (InterruptedException e) {// TODO Auto-generated catch blocke.printStackTrace();}               output.output1("lvjinhan");  } }}).start();    }static  class Outputer {  public synchronized void  output1(String name) {int len = name.length();//在方法内部使用关键字synchronized对代码块实现加锁synchronized (Outputer.class) {  for (int i = 0; i < len; i++) {System.out.print(name.charAt(i));}             System.out.println();  } }  public synchronized void  output2(String name) {int len = name.length(); for (int i = 0; i < len; i++) {System.out.print(name.charAt(i));}             System.out.println(); }  //在方法中使用关键字synchronized实现加锁  public static synchronized void  output3(String name) {int len = name.length(); for (int i = 0; i < len; i++) {System.out.print(name.charAt(i));}             System.out.println(); }}}

0 0