如何判断PHP是线程安全还是非线程安全的

2020-11-25 06:23:44 字数 3281 阅读 9612

1楼:育知同创教育

判断php 是线

程安全还是非线程安全:

1.通过phpinfo(); 查看其中的 thread safety 项,这个项目就是查看是否是线程安全,如果是:enabled,一般来说应该是ts版,否则是nts版。

2.命令行:php -i|grep -i thread结果:thread safety => disabled 【disabled表示非线程安全】

如果没有grep命令(windows),那就一个个找吧。

如何判断php 是线程安全ts还是非线程安全nts版的

2楼:育知同创教育

可以打印phpinfo();这个函数会告诉你

的多线程中,如何去判断给定的一个类是否是线程安全

3楼:安徽新华电脑专修学院

程序次序规则:一个线程内,**的执行会按照程序书写的顺序管程锁定原则:对同一变量的unlock操作先行发生于后来的lock操作

volatile变量规则:对一个volatile的写操作先行发生于后来的读操作

线程启动原则:thread的start()先行发生于线程内的所有动作线程终止原则:线程内的所有动作都先行发生于线程的终止检测线程中断原则:

对线程调用interrupt()先行发生于被中断的**检测到是否有中断发生

对象终结原则:一个对象的初始化操作先行发生于finalize()方法传递性:a先行发生于b,b先行发生于c,那么a先行发生于c

如何判断 java 线程并发的安全性

4楼:育知同创教育

总的结论:java是线程安全的,即对任何方法(包括静态方法)都可以不考虑线程冲突,但有一个前提,就是不能存在全局变量。如果存在全局变量,则需要使用同步机制。

如下通过一组对比例子从头讲解:

在多线程中使用静态方法会发生什么事?也就是说多线程访问同一个类的static静态方法会发生什么事?是否会发生线程安全问题?

public class test

}事实证明只要在静态函数中没有处理多线程共享数据,就不存在着多线程访问同一个静态方法会出现资源冲突的问题。下面看一个例子:

public class staticthread implements runnable

public static void main(string args) }}

public class staticaction

if (sum != 45)

system.out.println("sum is " + sum);

什么是线程安全 什么是线程不安全

5楼:育知同创教育

首先要明白线程的工作原理,jvm有一个main memory,而每个线

程有自己的working memory,一个线程对一个variable进行操作时,都要在自己的working memory里面建立一个copy,操作完之后再写入main memory。多个线程同时操作同一个variable,就可能会出现不可预知的结果。根据上面的解释,很容易想出相应的scenario。

而用synchronized的关键是建立一个monitor,这个monitor可以是要修改的variable也可以其他你认为合适的object比如method,然后通过给这个monitor加锁来实现线程安全,每个线程在获得这个锁之后,要执行完 load到workingmemory -> use&assign -> store到mainmemory 的过程,才会释放它得到的锁。这样就实现了所谓的线程安全。

什么是线程安全?线程安全是怎么完成的(原理)?

线程安全就是说多线程访问同一**,不会产生不确定的结果。编写线程安全的**是低依靠线程同步。

在接口方式中,线程有一个共享的数据成员,即: private int count =10;

而在继承方式中,线程之间没有共享的成员,而是各线程各自有一个私有成员,即: private int count =10;

楼主的**刚好是一个好例子,说明了何时需要考虑线程同步,并在一定程序上说明了怎样才能编写出线程安全的**。

在多线程环境中,当各线程不共享数据的时候,那么一定是线程安全的。问题是这种情况并不多见,在多数情况下需要共享数据,这时就需要进行适当的同步控制了。

线程安全一般都涉及到synchronized 就是一段**同时只能有一个线程来操作 不然中间过程可能会产生不可预制的结果

如果你的**所在的进程中有多个线程在同时运行,而这些线程可能会同时运行这段**。如果每次运行结果和单线程运行的结果是一样的,而且其他的变量的值也和预期的是一样的,就是线程安全的。

举例 比如一个 arraylist 类,在添加一个元素的时候,它可能会有两步来完成:1. 在 items[size] 的位置存放此元素;2. 增大 size 的值。

在单线程运行的情况下,如果 size = 0,添加一个元素后,此元素在位置 0,而且 size=1; 而如果是在多线程情况下,比如有两个线程,线程 a 先将元素存放在位置 0。但是此时 cpu 调度线程a暂停,线程 b 得到运行的机会。线程b也向此 arraylist 添加元素,因为此时 size 仍然等于 0 (注意哦,我们假设的是添加一个元素是要两个步骤哦,而线程a仅仅完成了步骤1),所以线程b也将元素存放在位置0。

然后线程a和线程b都继续运行,都增加 size 的值。 那好,现在我们来看看 arraylist 的情况,元素实际上只有一个,存放在位置 0,而 size 却等于 2。这就是“线程不安全”了。

如何判断java线程是否已经死掉了

6楼:育知同创教育

thread thread = new thread(.....);

if(thread.isalive){}这个方法判断的、

7楼:匿名用户

thread.isalive()

8楼:有只羊在吃狼

线程死掉是什么意思?

android:如何判断当前进程是不是主线程

9楼:八维教育

使用looper判断,方法为: looper.mylooper() != looper.getmainlooper()

使用线程句柄判断,将主线程的thread.currentthread()获取到主线程当前句柄,保存起来,在需要判断的时候调用thread.currentthread()来与之比较,即可判断当前线程是否是主线程了。

请问“利润单位边际贡献安全边际量”是如何推导的?br

1楼 匿名用户 推导过程如下 安全边际量 正常销售量 盈亏临界点销售量 盈亏临界点销售量 固定成本 单价 单位变动成本 代入上式 安全边际量 正常销售量 固定成本 单价 单位变动成本 两边同时乘以 单价 单位变动成本 安全边际量 单价 单位变动成本 正常销售量 单价 单位变动成本 固定成本 可以看出...

如何判断主板是换新的还是维修的,电脑售后修了如何判断是否换了新主板

1楼 匿名用户 所谓的新板不过就是维修的备品,即所谓的良品,你那块换下来的板子如果没有给你的话,修好后也会当新板卖给下一个客户,当然,用专业的东西清洗过后的主板看上去就像是新的一样的。可是,你从usb,声卡这些地方是可以看出新旧的。 2楼 马丁的弟弟 别用360用ccleaner你这个电脑估计没有蓝...

如何判断C++的返回值是0还是NULL

1楼 静心先生 0是一个数值,null是什么都没有,f null为真即为null,反之不是 c语言中返回值为空和返回值为零分别是什么意思? 2楼 匿名用户 在c语言中,返回值是没有强调说一定要有,但做为编程规范就要求一定要写。返回值为空,就没有返回值,也就没有return语句。那么格式如下 void...