1、对象传递
在JAVA的參数传递中,有两种类型,第一种是基本类型传递,比如int,float,double等,这样的是值传递,第二种是对象传递,比方String或者自己定义的类,这样的是引用传递。
也就是说。基本类型传递的是一个副本,而对象传递的是对象本身。
2、锁
JAVA中,对象锁的概念。就是对对象进行加锁。每一个对象都会有一个内存锁,假设加上锁以后。就仅仅能让一个线程进行操作,在操作完毕之前,其它线程无法对该对象进行再次操作。
3、样例
package com.itbuluoge.mythread;
class Common
{
private int num;
public int getNum() {
return num;
}
public void setNum(int num) {
this.num = num;
}
}
class SyThread extends Thread
{
private Common common;
public SyThread(Common common)
{
this.common=common;
}
public void run()
{
/*给传进来的对象加锁,其它线程就不能再操作*/
synchronized(common)
{
System.out.println("start.....");
try {
this.sleep(10000);
} catch (InterruptedException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
System.out.println("over.....");
}
}
}
public class TestThread {
/**
* @param args
*/
public static void main(String[] args) {
// TODO Auto-generated method stub
Common common=new Common();
/*对象传递。是引用传递。也就是说。是同个对象*/
SyThread first=new SyThread(common);
SyThread second=new SyThread(common);
first.start();
second.start();
}
}
4、输出
start.....
over.....
start.....
over.....
5、会先输出start然后等待10秒,继续输出over,然后反复,说明对象被锁住