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

线程之线程同步(1)

时间:2015-06-16 14:26:36      阅读:160      评论:0      收藏:0      [点我收藏+]

标签:

 线程同步: 当多个线程访问同一个数据资源时,会造成数据的不正确 。则,当同时访问时必须确定一个线程访问,其他线程暂不可访问
       在Java中 提出了对象互锁斥 使用synchronized 表示该线程被锁住,只能被当前线程访问,其他线程等待,暂不可访问

实例:

package com.exmaple.Thread;

public class Test5 extends Thread{

private static Runnab r;
/**
* 线程同步 当多个线程访问同一个数据资源时,会造成数据的不正确
* 则,当同时访问时必须确定一个线程访问,其他线程暂不可访问
* 在Java中 提出了对象互锁斥 使用synchronized 表示该线程被锁住,只能
* 被当前线程访问,其他线程等待,暂不可访问
* @param args
*/
public static void main(String[] args) {
// TODO Auto-generated method stub
r=new Runnab();

//创建两个线程, 设置线程名,并开启
Test5 t=new Test5();
Thread t1=new Thread(t);
Thread t2=new Thread(t);
t1.setName("name1");
t2.setName("name2");
t1.start();
t2.start();
}

//主方法实现接口,通过调用方法,拿到线程的name,从而可以得到不同的值
@Override
public void run() {
// TODO Auto-generated method stub
r.add(Thread.currentThread().getName()) ;
}
}
class Runnab {
int num=0;

//若没有synchronized,线程t1执行,num=1,线程t1睡眠;线程t2执行,num=2,线程t2休眠;t1执行打印 2,t2执行打印 2

//有synchronized  线程t1执行,线程2等待;线程t1执行完 num=1  线程t2开始执行 num=2
public synchronized void add(String name){
num++;
try{
Thread.sleep(1);
}catch (Exception e){

}
System.out.println("第"+num+"ge");
}
}

线程之线程同步(1)

标签:

原文地址:http://www.cnblogs.com/meijing/p/4580509.html

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