码迷,mamicode.com
首页 > 编程语言 > 详细

线程基础-java

时间:2018-10-17 11:09:59      阅读:161      评论:0      收藏:0      [点我收藏+]

标签:ble   其他   exce   monitor   ring   实例   rgs   lock   start   

 

 1.线程锁的三种方法,举例

package cn.itcast.thread.sync;
/**
 * 
 * @author Administrator
 *	对对象的实例加锁
 */
public class SyncThread implements Runnable {
	
	//创建实例
	static SyncThread instance=new SyncThread();
	static int  i=0;
	
	public void run() {
		// TODO Auto-generated method stub
		for (int j = 0; j < 100000; j++) {
			
			
			/*
			 * 
			 * 方法一:
			 * synchronized (instance) {
				i++;
			}*/
			//对方法上锁
			increase();
		}
	}
	
	//方法二:加在方法上,如果不是static修饰的 ,要确保是同一个锁才能保证同步的进行,用static修饰的是方法三
		private synchronized void increase() {
			// TODO Auto-generated method stub
			i++;	//对成员变量的操作要加上锁
			System.out.println(Thread.currentThread().getName()+"----------------"+i);
		}
		
	public static void main(String[] args) {
		Thread t1=new Thread(instance);
		Thread t2=new Thread(instance);
		Thread t3=new Thread(instance);

		t1.start();t2.start();t3.start();
		try {
			t1.join();
		} catch (Exception e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
		System.out.println("-----------最后的结果:"+i);
		
	}
	
}

 2.object.wait()

  

//代码需要写在锁中
//线程一
 synchronized(object){  //锁既是监听器

       object.wait();  //此句会使得当前线程等待,且释放监视器的所有权,等待被其他线程唤醒且释放了monitor之后
        
}

//线程二:
synchronized(object){  //锁既是监听器

       object.notify();  //此句会唤醒一个等待的线程,
        
}

  

线程基础-java

标签:ble   其他   exce   monitor   ring   实例   rgs   lock   start   

原文地址:https://www.cnblogs.com/xiayuer0114/p/9802195.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!