首页 > 代码库 > java的对象锁和对象传递
java的对象锁和对象传递
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,然后重复,说明对象被锁住
java的对象锁和对象传递
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。