tzkr.net
当前位置:首页 >> 属于线程安全的Api >>

属于线程安全的Api

你问的是java API中的哪些类是安全的?还是线程安全的意思?关于线程安全,是指当多个线程访问同一个变量时,该变量不会因为多线程访问产生意想不到的问题,为了避免多线程访问的不可预知的问题,对于程序中多线程能访问到的变量要加锁,即加synchronized,放在同步块中,或者对改变该变量值的方法加synchronized限制.当然jdk中自带的一些类本身就实现了该机制,本身就是线程安全的,比如StringBuffer,Vector等.多线程是程序中比较高级的一个方面,希望你能深入理解!

1) BD2) 不知道你问的什么,我只能告诉你 ArrayList 默认初始化长度为 10 ---------------------------------------同学,考完了吧,考得还好吧,呵呵.

搜一下:mysql C API在windows下是线程安全的么

HANDLE CreateThread(LPSECURITY_ATTRIBUTES lpThreadAttributes, // 线程安全属性DWORD dwStackSize, // 堆栈大小LPTHREAD_START_ROUTINE lpStartAddress, // 线程函数LPVOID lpParameter, //线程参数DWORD dwCreationFlags, // 线程创建属性LPDWORD lpThreadId // 线程ID);

java集合框架提供了多种synchronized集合, 比如Vector, HashTable, Collections的synchronizedXxx方法的返回值等.synchronized集合是线程安全的, 但不是严格线程安全的. 根据JCIP第二章关于线程安全的定义--线程安全的类无需调用方进行额外的同步--synchronized集合是不满足该定义的. 如果我们将线程安全的定义放宽一些--单次调用对象的方法而无需调用方进行额外的同步, 这样synchronized集合就符合定义了.

一些历史类的一般是线程安全的,例如:Vector,HashTable等在jdk升级后,出现了替代一些集合的类,ArrayList,HashMap等,一般都是线程不安全的.

构造方法声明时,前面不能加synchronized因为这样做没什么意义.但构造方法实现时可以加synchronized如果类中有全局的静态变量,可以加synchronized

如果你的代码所在的进程中有多个线程在同时运行,而这些线程可能会同时运行这段代码.如果每次运行结果和单线程运行的结果是一样的,而且其他的变量的值也和预期的是一样的,就是线程安全的. 或者说:一个类或者程序所提供的接口对于线程来说是原子操作或者多个线程之间的切换不会导致该接口的执行结果存在二义性,也就是说我们不用考虑同步的问题. 线程安全问题都是由全局变量及静态变量引起的. 若每个线程中对全局变量、静态变量只有读操作,而无写操作,一般来说,这个全局变量是线程安全的;若有多个线程同时执行写操作,一般都需要考虑线程同步,否则就可能影响线程安全.

不同的线程操作同样的资源就存在安全问题,线程安全的类就比如一个房间在同一时刻只能有一个人进入,另外一个人想要进去必选等前面那个人出来,这就是线程安全的.设计线程安全的类有一个同步的方法,用synchronized这个关键字修饰需要同步的函数,也可以synchronized(锁){代码}的形式同步一部分代码,注意这个中间的 锁 可以是任何一个对象,但是必须是同一个对象,可以在类专门创建一个Object对象来作为锁也可以用其他的对象,只要确保锁的唯一(他是不变的不管在那个线程中指的都是同一片内存),希望是你要的答案,不是也木关系会有大神给你解答的.

栈只是操作系统为线程分配的一块内存.是个线程独有的,保存其运行状态和局部自动变量的.栈在线程开始的时候初始化,每个线程的栈互相独立,因此,栈是线程安全的.

网站首页 | 网站地图
All rights reserved Powered by www.tzkr.net
copyright ©right 2010-2021。
内容来自网络,如有侵犯请联系客服。zhit325@qq.com