永发信息网

java中的线程安全是什么?什么叫线程安全?什么叫不安全?

答案:5  悬赏:10  手机版
解决时间 2021-01-31 23:52
  • 提问者网友:练爱
  • 2021-01-31 14:31
java中的线程安全是什么?什么叫线程安全?什么叫不安全?
最佳答案
  • 五星知识达人网友:思契十里
  • 2021-01-31 15:37
java中的线程安全是什么:
就是线程同步的意思,就是当一个程序对一个线程安全的方法或者语句进行访问的时候,其他的不能再对他进行操作了,必须等到这次访问结束以后才能对这个线程安全的方法进行访问

什么叫线程安全:
如果你的代码所在的进程中有多个线程在同时运行,而这些线程可能会同时运行这段代码。如果每次运行结果和单线程运行的结果是一样的,而且其他的变量的值也和预期的是一样的,就是线程安全的。
或者说:一个类或者程序所提供的接口对于线程来说是原子操作或者多个线程之间的切换不会导致该接口的执行结果存在二义性,也就是说我们不用考虑同步的问题。
线程安全问题都是由全局变量及静态变量引起的。
若每个线程中对全局变量、静态变量只有读操作,而无写操作,一般来说,这个全局变量是线程安全的;若有多个线程同时执行写操作,一般都需要考虑线程同步,否则就可能影响线程安全。
全部回答
  • 1楼网友:duile
  • 2021-01-31 18:42
importjava.util.scanner;publicclasstest { publicstaticvoidmain(string[]args) { finalmessagemessage=newmessage();finalthreadthread=newthread(newrunnable(){ publicvoidrun(){ scannerscanner=newscanner(system.in); while(true){ stringmsg=scanner.next(); if(msg.equals("exit")) return; message.sendmessage(msg); } } }); thread.start();while(true){ if(thread.isalive()==false) break; stringmsg=message.receivemessage(); if(msg!=null){ system.out.println(msg); } try{ thread.sleep(100); }catch(interruptedexceptione){} }} }classmessage{ privatestringmessage; privatebooleanunread=false; synchronizedvoidsendmessage(stringmessage){ this.message=message; unread=true; }synchronizedstringreceivemessage(){ stringmsg=unread?message:null; unread=false; returnmsg; } }
  • 2楼网友:鸽屿
  • 2021-01-31 17:21
存在竞争的线程不安全,不存在竞争的线程就是安全的
  • 3楼网友:青尢
  • 2021-01-31 16:44
就是线程同步的意思,就是当一个程序对一个线程安全的方法或者语句进行访问的时候,其他的不能再对他进行操作了,必须等到这次访问结束以后才能对这个线程安全的方法进行访问 什么叫线程安全:
  • 4楼网友:未来江山和你
  • 2021-01-31 16:25
打个比方:一个蛋糕,几个人一起吃。 第一种情况:当一个人吃的时候其他人要等这个人吃完才能吃。(线程安全) 第二种情况:几个人一起上,同时吃。(线程不安全)
我要举报
如以上回答内容为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
点此我要举报以上问答信息
大家都在看
推荐资讯