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

aspx网站做app/网络推广app是违法的吗

aspx网站做app,网络推广app是违法的吗,开发一款软件的费用,做网站时网页中格式对不齐怎么办以前用ThreadLocal用的比较少,今天在看以前的代码的时候,发现有个类里面的方法里面使用了公共的静态变量,而且有很多类都引用了这个方法。由于这个变量不是final的,是动态赋值的,所以在多线程的情况下可能会引起问题。…

以前用ThreadLocal用的比较少,今天在看以前的代码的时候,发现有个类里面的方法里面使用了公共的静态变量,而且有很多类都引用了这个方法。由于这个变量不是final的,是动态赋值的,所以在多线程的情况下可能会引起问题。因为要改造这个方法的这个变量问题,所以我想到了ThreadLocal,并对ThreadLocal进行了一次实验,通过实验,对ThreadLocal有了一次比较深刻的认识。在此把代码贴出来,跟各位共同学习一下。

public class Test {public static ThreadLocal<String> threadLocal = new ThreadLocal<String>();private static final long waitTime = 3000L;public static void main(String[] args) throws Exception {Thread.sleep(60000);Thread thread1 = new Thread(new Runnable() {@Overridepublic void run() {System.out.println(Thread.currentThread().getName());threadLocal.set(Thread.currentThread().getName()+"----111111111");try {Thread.sleep(waitTime);} catch (InterruptedException e) {e.printStackTrace();}User user = new User("张三");user.say();}});Thread thread2 = new Thread(new Runnable() {@Overridepublic void run() {System.out.println(Thread.currentThread().getName());threadLocal.set(Thread.currentThread().getName()+"----22222222");try {Thread.sleep(waitTime);} catch (InterruptedException e) {e.printStackTrace();}User user = new User("李四");user.say();}});Thread thread3 = new Thread(new Runnable() {@Overridepublic void run() {System.out.println(Thread.currentThread().getName());threadLocal.set(Thread.currentThread().getName()+"----3333333333");try {Thread.sleep(waitTime);} catch (InterruptedException e) {e.printStackTrace();}User user1 = new User("王五");user1.say();User user2 = new User("赵六");user2.say();}});thread1.start();thread2.start();thread3.start();Thread thread4 = new Thread(new Runnable() {@Overridepublic void run() {System.out.println(Thread.currentThread().getName());threadLocal.set(Thread.currentThread().getName()+"----4444444444");try {Thread.sleep(waitTime);} catch (InterruptedException e) {e.printStackTrace();}new Thread(new Runnable() {@Overridepublic void run() {User user1 = new User("宋八1");user1.say();threadLocal.set(Thread.currentThread().getName()+"----5555555555");User user2 = new User("宋八2");user2.say();}}).start();new Thread(new Runnable() {@Overridepublic void run() {User user1 = new User("钱九1");user1.say();threadLocal.set(Thread.currentThread().getName()+"----666666666666666");User user2 = new User("钱九2");user2.say();}}).start();}});thread4.start();Thread.sleep(60000);}

}

public class User {private String name;public User(){super();}public User(String name){this.name = name;}public void say(){System.out.println(name + " say:" + Test.threadLocal.get());}

}

结果输出如下:

Thread-2
Thread-3
Thread-4
Thread-5
张三 say:Thread-2----111111111
李四 say:Thread-3----22222222
王五 say:Thread-4----3333333333
赵六 say:Thread-4----3333333333
钱九1 say:null
钱九2 say:Thread-7----666666666666666
宋八1 say:null
宋八2 say:Thread-6----5555555555

 

做一下说明:

我创建了四个主线程,每个线程内部对ThreadLocal变量进行赋值,并在主线程内创建User对象,User对象会输出ThreadLocal的值。通过结果可以看出:

1、各个线程内部的ThreadLocal是不相互影响的,并且主线程与子线程是不相互影响的。 

2、同一个线程内容,不同对象获取的同一个ThreadLocal对象是一样的。

3、子线程是无法获取到主线程的ThreadLocal值的

通过以上试验,我还进行一下内存的监测,发现一个线程调用结束之后,会进行对象的回收。如图:

 

通过

 

以上的试验,希望对大家理解和使用ThreadLocal能有所帮助。

 

 

http://www.jmfq.cn/news/5090185.html

相关文章:

  • 贵州省住房和城乡建设厅网站首页/软件注册推广平台
  • php 网站目录结构/宣传软文
  • 网站建设需要的技术设备/辽宁和生活app下载安装
  • 小程序快速建站/技术培训班
  • dw做网站需要数据库么/网站制作建设公司
  • 销售网站制作电话/微信推广费用一般多少
  • 高端网站设计公司如何设计网站/加强服务保障 满足群众急需需求
  • 网站源码出售/网站关键词优化建议
  • 做网站首页的图片怎么缩小/深圳市网络seo推广平台
  • 北京手机网站建设外包/百度一下知道官网
  • html5 公司网站/品牌网站设计
  • 建设工程鲁班奖公示网站/app推广文案
  • 设计网站中如何设置特效/网推软件有哪些
  • 高端网站开发教程/谷歌收录查询工具
  • 北京网站制作费用/湖南seo网站开发
  • wordpress标题间隔符修改/seo课程在哪培训好
  • 青岛的网站建设/互联网营销是什么
  • 成都个人网站建设/近两年网络营销成功案例
  • 公安网站的建设目的/南昌seo代理商
  • 专门做加盟的网站/市场营销推广策划方案
  • 代理服务器地址大全/seo站长网怎么下载
  • 西安保洁公司网站建设/最近实时热点新闻事件
  • 重庆潼南网站建设哪家便宜/网络营销推广是做什么的
  • 怎样建设邮箱网站/seo网站优化价格
  • 天津网站建设公司排名/网站推广文章
  • 九江 网站建站 设计 公司/西安网站到首页排名
  • 亳州网站网站建设/百度权重域名
  • 上海浦东新区科技网站建设/网络营销师证书有用吗
  • 香港网站没有icp备案吗/河北网站seo策划
  • 设计头条/seo推广专员招聘