浅学H5 Web Workers(多线程)(周记)

16 篇文章 0 订阅
7 篇文章 0 订阅

周总结:

        这周主要进行的是对JS高级的学习,刚开始看视频学一遍后感觉问题不是很大,不过这两天结合其他的进行再学习,我发现我的问题还是不小的。尤其是对闭包,多线程的学习还是过于浅薄,缺少总结;明天又要考核了,感觉不太妙呀。以后对新的知识的学习还是要结合多点渠道多进行学习,要不然很难掌握好知识点!

        下面浅记录关于JS对多线程的基本用法:

前言

        JS是单线程的去跑代码,比如如果做一个循环从0到一个很大的数字相加然后输出,浏览器可能会假死(无响应状态),这个时候利用多线程的优点去创建主线程和子线程成为了解决这个问题的好方法;

下面记录一下JS多线程的基本应用:

实例:

1.main.js (主线程):

    var number=42
    var worker=new Worker('t1.js');
    //创建Worker对象
    worker.onmessage=function(event){
        console.log("主线程接收分线程返回的数据"+event.data);
        alert(event.data)
    }   
    //或进行代码的简写:
    //		worker.onmessage=({data})=>{
    //   	console.log("主线程接收分线程返回的数据"+data);
    //    alert(data)
    //}
    //绑定接收信息的监听,当接收到信息后调用
    worker.postMessage(number);
    console.log("主线程向分线程发送数据"+number);
    //向分线程发送信息

2.t1.js(分线程):
 

function fff(n){
    return n<=2?1:fff(n-1)+fff(n-2);
}
var onmessage=function(event){
    var number=event.data;
    console.log("分线程接收到的主线程数据:"+number)
    var result=fff(number)
    postMessage(result)
    console.log("分线程向主线程发送数据:"+result)
}
//或进行代码的简写:
//self.onmessage=({data})=>{
//    var number=data;
//    console.log("分线程接收到的主线程数据:"+number)
//    var result=fff(number)
//    postMessage(result)
//    console.log("分线程向主线程发送数据:"+result)
//}
//alert("d");//报错
//因为alert是window的方法,分线程的全局对象不是window

 3.控制台输出结果:

主线程向分线程发送数据:42
分线程接收到的主线程数据:42
分线程向主线程发送数据:267914296
主线程接收分线程返回的数据:267914296 

结束!

  • 6
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
在静态方法中使用JdbcTemplate需要注意以下几点: 1. 静态方法中无法直接使用Spring容器中的Bean,因为静态方法是类级别的,而Bean是实例级别的。因此需要手动获取JdbcTemplate实例,可以通过ApplicationContext获取JdbcTemplate实例,或者通过静态变量保存JdbcTemplate实例。 2. 在使用JdbcTemplate时,需要先创建一个JdbcTemplate实例,并设置数据源。数据源可以通过Spring容器注入,或者手动创建。在静态方法中,可以通过静态变量保存JdbcTemplate实例,避免重复创建。 3. 在使用JdbcTemplate操作数据库时,需要注意线程安全问题。JdbcTemplate是线程安全的,但是需要保证JdbcTemplate实例的线程安全,即在多线程环境中需要保证同一JdbcTemplate实例不会被并发访问。 下面是一个示例代码: ``` public class JdbcUtils { private static JdbcTemplate jdbcTemplate; public static void setDataSource(DataSource dataSource) { jdbcTemplate = new JdbcTemplate(dataSource); } public static void executeSql(String sql) { jdbcTemplate.execute(sql); } } ``` 在上面的代码中,我们通过静态变量保存了JdbcTemplate实例,并提供了一个静态方法setDataSource用于设置数据源。在使用JdbcTemplate时,我们可以直接调用静态方法executeSql执行SQL语句。需要注意的是,这里的executeSql方法是线程安全的,因为JdbcTemplate实例是共享的,并且JdbcTemplate本身是线程安全的。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

阿泽不会飞

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值