线程基础-java

Posted xiayuer0114

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了线程基础-java相关的知识,希望对你有一定的参考价值。

 

 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的主要内容,如果未能解决你的问题,请参考以下文章

Java线程池详解

Java 线程池详解

Java线程池详解

JAVA 线程基础(上)

java基础入门-多线程同步浅析-以银行转账为样例

多线程 Thread 线程同步 synchronized