当前位置: 首页 > news >正文

网站版建设/提供seo顾问服务适合的对象是

网站版建设,提供seo顾问服务适合的对象是,昆明自动seo,建设网站用哪个主机好大多数多线程应用中需要码农们自己去额外解决一些问题,这些问题在单线程程序中并不存在,尤其是线程安全性问题,由于不同的线程能共享相同的内存和数据,一个线程完全可以去破坏另一个线程的数据,尤其是在一些没有内存保…

大多数多线程应用中需要码农们自己去额外解决一些问题,这些问题在单线程程序中并不存在,尤其是线程安全性问题,由于不同的线程能共享相同的内存和数据,一个线程完全可以去破坏另一个线程的数据,尤其是在一些没有内存保护机制的操作系统中,可能破坏整个系统的数据。因此,多线程程序中,必须非常注意对资源的使用。

一般来说,每个线程只有在确保资源不能被改变或者自身对资源具有独占权时,这个资源才是安全的,也就是所谓的线程安全,如果一个线程使用某个能被修改的资源,并且在它使用这个资源的同时,还有其他线程也能使用这个资源,那么这个资源就是不安全的,也就是所说的线程不安全。这里所说的资源,可以是程序中的变量,磁盘上的文件,数据库的数据,各类数据连接等等可以共享的资源,这里所说的安全,可以是变量的肆意修改,文件损坏,各种数据内容出现不期望的变化等待。

事实上也很容易理解。两个人同时修改一个文件,不采取某种措施的情况下怎么能不会出现问题?

用一段简单的示例来说明问题吧

public static void main(String[] arg){

Thread thread1=new Thread(new Runnable() {

@Override

public void run() {

int count=0;

while(count<10){

System.out.print("1");

count++;

try {

Thread.sleep(500);

} catch (InterruptedException e) {

e.printStackTrace();

}

}

}

});

Thread thread2=new Thread(new Runnable() {

@Override

public void run() {

int count=0;

while(count<10){

System.out.print("2");

count++;

try {

Thread.sleep(500);

} catch (InterruptedException e) {

e.printStackTrace();

}

}

}

});

Thread thread3=new Thread(new Runnable() {

@Override

public void run() {

int count=0;

while(count<10){

System.out.print("3");

count++;

try {

Thread.sleep(500);

} catch (InterruptedException e) {

e.printStackTrace();

}

}

}

});

Thread thread4=new Thread(new Runnable() {

@Override

public void run() {

int count=0;

while(count<10){

System.out.print("4");

count++;

try {

Thread.sleep(500);

} catch (InterruptedException e) {

e.printStackTrace();

}

}

}

});

thread1.start();

thread2.start();

thread3.start();

thread4.start();

}

示例中用了四个线程,分别在控制台打印10次数字1,2,3,4。运行后的某次结果如下:

2134213421432143214334124321341243123421

再次运行,又是这样

2314234123142314231423412341234123142341

程序运行的结果杂乱无规律,这就是多线程程序的特征。这个程序是线程不安全的。如果我们把控制台当作一个文件来看,我们希望得到的结果应该是这样:

1111111111222222222233333333334444444444

我们希望自己的内容能正确的被记录,同时也不希望破坏别人的内容。在这里,system.out就是一个共享的资源,四个线程都同时使用这个资源,而且没有采用任何保护措施,这在实际业务中是非常危险的。

线程通过共享内存,文件句柄和其他资源,使得程序更加高效,尤其是在一些服务端程序中,多线程能大幅度提升服务器性能。遗憾的是,任何事情都有两面性,多线程也不例外,它带来了程序的复杂性,它让代码变得难于理解,难于追踪问题,它需要你谨慎的去使用资源。

==========================================================================关注微信公众号 “Java技术”,可以实时获取有价值的技术文章推送。

"Java技术"交流群:245130488

"Java软件工程师培训"系列课程正式推出,助你自学成才,进入IT行业。

http://www.lbrq.cn/news/1028089.html

相关文章:

  • 网络架构和管理/厦门seo外包
  • 电话销售企业网站怎么做/东莞做网站公司电话
  • 商城类网站建设方案/外贸建站seo
  • 青海省住房建设厅网站/宁波网络推广方式
  • 做社交的招聘网站/seo推广平台
  • 平板网站开发/唐山建站公司模板
  • 安平有做网站推广的吗/外链大全
  • 网站怎么做备份/竞价推广营销
  • 网站静态/微信营销的优势
  • 网站建设服务费下什么科目/合肥关键词排名
  • 上海做网站哪家好/百度点击软件找名风
  • 网站如何做背景音乐/新平台推广赚钱
  • 企业网站搭建 网络活动策划/百度网盘电脑版下载
  • 推广运营公司网站/seo免费
  • 给我免费播放片高清在线观看授他以柄电视剧/百度小程序对网站seo
  • 做企业网站合同/广东东莞大益队
  • 建立网站的公司杭州/免费外链发布平台
  • 做食品行业网站/今天有什么新闻
  • 北京网站制作收费标准/网络营销岗位职责和任职要求
  • 无锡模板建站源码/广州seo服务外包
  • 做泵阀生意到哪个网站/网站优化建议
  • 网站运营与维护是什么意思/seo发包技术教程
  • 怎么找出网站的备案号/外贸seo建站
  • 最简单的网站开发国际化/中国舆情观察网
  • 石家庄做网站最好的公司/2020年可用好用的搜索引擎
  • 同城做哪个网站推广效果好/抖音seo优化软件
  • 网站建设行业赚钱么/成都seo整站
  • 营销型网站展示/自己个人怎样做电商
  • 视频背景制作软件app/天津seo网站排名优化公司
  • wordpress设置新页面跳转/2022年seo还值得做吗
  • c/c++实现 TCP Socket网络通信
  • Go语言实战案例:简易图像验证码生成
  • 51单片机-驱动LED模块教程
  • 普通电脑与云电脑的区别有哪些?全面科普
  • TeamViewer 以数字化之力,赋能零售企业效率与客户体验双提升
  • 比特币与区块链:去中心化的技术革命