线程同步的问题

package cn.itcast.demo;

public class TraditionalThreadSynchronizedDemo {
	
	private static String xxx = "";
	 static class Outputer{
		
		 /*
		  * 这里的out1锁定的对象是this
		  *out2锁定的对象是this
		  * out3锁定的对象是Outputer.class这个对象
		  * 
		  */
		//在方法里面加个synchronized的关键字也可以实现同步,这里锁定的对象是this
		public synchronized void out1(String name)
		{
			//这里锁定的对象必须要是同一个对象,否则将会出现错误
			//synchronized (this/*xxx*/) {
				for (int i = 0; i < name.length(); i++) {
					System.out.print(name.charAt(i));
				}
				System.out.println();
			//}
		}
		
		public  void out2(String name)
		{
			//这里锁定的对象必须要是同一个对象,否则将会出现错误,这里必须要是this,因为out1方法锁定的对象是this
			synchronized (/*this*//*xxx*/Outputer.class) {
				for (int i = 0; i < name.length(); i++) {
					System.out.print(name.charAt(i));
				}
				System.out.println();
			}
		}
		
		//这里锁定的对象其实是Outputer.class这个对象
		public synchronized static void out3(String name)
		{
			//这里锁定的对象必须要是同一个对象,否则将会出现错误,这里必须要是this,因为out1方法锁定的对象是this
			
				for (int i = 0; i < name.length(); i++) {
					System.out.print(name.charAt(i));
				}
				System.out.println();
		}
		
	}
	
	
	public void init()
	{
		//这里注意一点,内部类在实例化的时候一定要有外部类的实例才可以
		/*TraditionalThreadSynchronizedDemo t = new TraditionalThreadSynchronizedDemo();
		Outputer outputer = t.new Outputer();*/
		 final Outputer outputer = new Outputer();
		new Thread(new Runnable(){
			public void run() {
					while(true)
					{
						try {
								Thread.sleep(10);
							} catch (InterruptedException e) {
								// TODO Auto-generated catch block
								e.printStackTrace();
							}
							//内部类调用外部类的变量,该变量必须要是final类型的
							outputer.out2("aaaaaaaa");
					}
			}
		}).start();
		
		
		new Thread(new Runnable(){
			public void run() {
					while(true)
					{
						try {
							Thread.sleep(10);
						} catch (InterruptedException e) {
							// TODO Auto-generated catch block
							e.printStackTrace();
						}
						outputer.out3("bbbbbbbb");
					}
			}
			
		}).start();
	}
	public static void main(String[] args) {
		
		TraditionalThreadSynchronizedDemo t = new TraditionalThreadSynchronizedDemo();
		t.init();
	}

}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值