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

java 多线程

时间:2015-07-12 23:11:11      阅读:260      评论:0      收藏:0      [点我收藏+]

标签:

synchronized关键字

方法或代码块的互斥性来完成实际上的一个原子操作。(方法或代码块在被一个线程调用时,其他线程处于等待状态)

所有的Java对象都有一个与synchronzied关联的监视器对象(monitor),允许线程在该监视器对象上进行加锁和解锁操作。

a、静态方法:Java类对应的Class类的对象所关联的监视器对象。

b、实例方法:当前对象实例所关联的监视器对象。

c、代码块:代码块声明中的对象所关联的监视器对象。

 

所以多线程操作同一个内容并要保持一致性时,就将该对象设为类的静态成员

public class syncTest {

	public static int count = 0;
	
	public static synchronized void addC(){
		if(count <100){
			count ++;		
			System.out.println(Thread.currentThread().getName() +"   "+count);			
			try {
				Thread.sleep(1000);
			} catch (InterruptedException e) {
				// TODO Auto-generated catch block
				e.printStackTrace();
			}
			
		}
	}
		
	public static void main(String args[]){
		Thread thread1 = new Thread();
		thread1 = new Thread(new Runnable(){
			public void run(){
				System.out.println("thread1 start run");
				while(count <100){
					syncTest.addC();
					
				}
			}
		});
		syncTest st = new syncTest();
		Thread thread2 = new Thread();
		thread2 = new Thread(new Runnable(){
			public void run(){
				System.out.println("thread2 start run");
				while(count <100){
					st.addC();
				}	
			}
		});
		thread1.start();
		thread2.start();
	}
}

  输出:

技术分享

可以看到,两个线程操作的是同一个数

 

java 多线程

标签:

原文地址:http://www.cnblogs.com/zxahu/p/4641145.html

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