jackyxio

2007年7月10日 #

初步认识JAVA(四)-互斥

时间还过的真快呀,转眼就过了一年了。接触JAVA也快二年了,当初写BLOG的初衷也忘记了。今天突然想起,写下一篇吧。

多线程是服务端程序用的最多的技术,为了让多线程有序的访问共同资源,就必须在访问先查询资源是否可以访问,因此就产生了互斥。JAVA的互斥使用synchronized关键字来实现的,在使用上有二种方法,下面给出例子。

1.声明变量或函数在同一对象内可进行互斥

class TestClass
{
public byte[] m_Test = new byte[1];
public synchronized void Test()
{
//函数中的代码在互斥效果内
}

public void Test1()
{
synchronized(m_Test)
{
//段中的代码在互斥效果内
}
}
}

TestClass t = new TestClass();
所有的线程在使用t对象时,对t内的synchronized(m_Test)块和Test函数访问产生互斥作用。

2.声明变量或函数在同一个进程内可进行互斥
class TestClass
{
public static byte[] m_Test = new byte[1];
public static synchronized void Test()
{
//函数中的代码在互斥效果内
}

public void Test1()
{
synchronized(m_Test)
{
//段中的代码在互斥效果内
}
}
}

TestClass t = new TestClass();
TestClass t1 = new TestClass();
所有的线程在使用t和t1对象时,对synchronized(m_Test)块和Test函数访问均产生互斥作用,同时只存在一个线程访问。

仔细看一下,方法2比方法1,就是在声明的时候将变量或函数声明成静态的,除此以外并无差别。但是功能却天差地远。

posted @ 2007-07-10 01:04 jacky的无聊空间 阅读(737) | 评论 (1)编辑 收藏

2006年5月24日 #

初步认识JAVA(三)-函数传参

工作一直很忙,也没来得及再来写一些心得,今天有点空,说一下JAVA函数传参的问题

C/C++中,想从函数中传参出来,可以使用指针或者引用,但在JAVA里就没这些方法,一般情况,绝大部分对象都可以直接传参,但是String类就是不行,我也不清楚是什么原因,如果想从函数体中传字符串出来,用StringBuffer吧。

虽然这没有什么难的,但是不知道的人,很容易绕在里面,怎么也想不通原因。

posted @ 2006-05-24 11:22 jacky的无聊空间 阅读(391) | 评论 (0)编辑 收藏

2005年11月27日 #

初步认识JAVA(二)--变量

不知不觉,学了几天的JAVA了,来写写学习心得,留个记念。
变量,是每个高级语言都有的元素,JAVA的变量好象被分为了二种,一种是基础变量,象int boolean long String等等,另一种就是类变量。基础变量有一个很值得注意的地方就是,作为函参时,只能传入,不能传出的,而类变量而可以。
随着学习的进步,对JAVA的变量感觉越来越熟悉,如果你学过C/C++的话,你可以将JAVA的变量看做是指针,如果没有new的话,是没有分配内存的。如:
class T{
....
};
T cTemp;//这样这个类对象是没有被分配内存的。
String cT = "Hello";//JAVA中很多这样的用法,cT在这里还是没有被分配内存,而是指向了"Hello"这个字串在内存中的地址。
class T{
T(){System.out.println("Test");};
};
T cTemp;//其实构造函数是没有被执行的
cTemp = new T();//这样才会调用构造函数
好的,基本上现在学到的有关JAVA变量的东西就只有这些了。
其它的以后再说吧!

posted @ 2005-11-27 00:52 jacky的无聊空间 阅读(136) | 评论 (0)编辑 收藏

2005年11月15日 #

初步认识JAVA(一)

干了四、五年的VC程序员,怕贪多不精,一直都没想过再学点其它的语言,哪知因为工作的需要,不得不买了本《JAVA编程语言》(第三版),老老实实的从头学起。
第一章、JAVA概述,将JAVA语言一些大致情况,仔细看了看。有着C/C++语言的底子,大部分的都能很轻松的明白,格式的差异、逐步提到的一些基础类和方法是需要注意的,JAVA还提出了一个域(field)的概念,我也不是太明白这个域的作用是什么,以后了解了再回过头来更改吧。
Object类是个很特别的类,所有的类对象都可以赋值给Object类对象,也可以强制转换回原来的类对象。这样就为程序的数据转换带来了方便。
书不管怎么看也好,学习一种新的语言,多动动手自己写写,印象总是深刻一些。在IDE的选择上,我与朋友出现了分歧。我提议一边学习语言一边熟悉流行的IDE,而我的朋友们觉得则应该使用简单的文本编辑器加JDK,在我粗略的看过JBuilder后,也觉得这个建议更适合语言的学习。

posted @ 2005-11-15 22:51 jacky的无聊空间 阅读(207) | 评论 (2)编辑 收藏

仅列出标题