1.static的不同
C语言中static 是静态变量的意思
1.如果是静态局部变量,则是在这个函数内部声明和定义的变量,不能被函数之外调用。
2.如果是静态外部变量,则是在本文件内部声明定义,不能被超出该文件调用使用,而且一直占用内存,不被消灭。
Java语言中,static修饰的变量是类变量的意思。
2.volatile在C和JAVA中
在用C进行嵌入式编程时:
一般说来,volatile用在如下的几个地方:
2、多任务环境下各任务间共享的标志应该加volatile;
3、存储器映射的硬件寄存器通常也要加volatile说明,因为每次对它的读写都可能有不同意义;
另外,以上这几种情况经常还要同时考虑数据的完整性(相互关联的几个标志读了一半被打断了重写),在1中可以通过关中断来实现,2 中可以禁止任务调度,3中则只能依靠硬件的良好设计
volatile保证每次取值都是从主存中取,保证了值的绝对正确性,而不是从寄存器中取,被volatile修饰的变量是容易被外因意外改变值的量
而在Java中,volatile没有锁的好使,在Java中使用volatile有很大的限制性,所以建议使用锁进行修饰(synchronized),
synchronized是Java语言的关键字,可用来给对象和方法或者代码块加锁,当它锁定一个方法或者一个代码块的时候,同一时刻最多只有一个线程执行这个段代码。当两个并发线程访问同一个对象object中的这个加锁同步代码块时,一个时间内只能有一个线程得到执行。另一个线程必须等待当前线程执行完这个代码块以后才能执行该代码块。然而,当一个线程访问object的一个加锁代码块时,另一个线程仍然可以访问该object中的非加锁代码块。
http://baike.baidu.com/link?url=CsUO5wFqymqI9K7I8HtNH8KUFCGRRkFXC9mErbCHAeniPlhY7R4RsA6TdoEbNyeDNgHoHYMEoYqZyfrksHgpbK