线程互斥

来源:互联网 发布:天津基础教育网络平台 编辑:程序博客网 时间:2024/04/29 20:53

线程同步:synchronized关键字加锁

package com.thread.learn;public class TraditionalThreadSynchronized {public static void main(String[] args) {new TraditionalThreadSynchronized().init();}private void init(){Outputer outputer = new Outputer();new Thread(new Runnable(){@Overridepublic void run() {while(true){try {Thread.sleep(10);} catch (InterruptedException e) {e.printStackTrace();}outputer.output1("AAAAA");}}}).start();new Thread(new Runnable(){@Overridepublic void run() {while(true){try {Thread.sleep(10);} catch (InterruptedException e) {e.printStackTrace();}outputer.output1("BBBBB");}}}).start();}static class Outputer{public void output1(String name){int len = name.length();synchronized (this) {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();}public void output3(String name){int len = name.length();synchronized (Outputer.class) {for(int i = 0;i<len;i++){System.out.print(name.charAt(i));}System.out.println();}}public static synchronized void output4(String name){int len = name.length();for(int i = 0;i<len;i++){System.out.print(name.charAt(i));}System.out.println();}}}


在Output类的中,output1和output2可以通过this对象为锁实现同步;output3和output4通过Output.class为锁实现同步

实现同步前提:同一个对象,同一把锁

0 0
原创粉丝点击