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

建设交通职业技术学院招聘信息网站wordpress 网址导航插件

建设交通职业技术学院招聘信息网站,wordpress 网址导航插件,营山县城乡规划建设局官方网站,代做底单的网站多线程爬虫是一种同时运行多个线程来提高爬取速度的爬虫方式。通过将大量的工作分配给不同的线程#xff0c;可以减少爬虫的运行时间#xff0c;提高效率。不过需要注意的是#xff0c;在爬取过程中需要合理的管理线程数#xff0c;以避免对被爬取的网站造成过大的负荷。 …多线程爬虫是一种同时运行多个线程来提高爬取速度的爬虫方式。通过将大量的工作分配给不同的线程可以减少爬虫的运行时间提高效率。不过需要注意的是在爬取过程中需要合理的管理线程数以避免对被爬取的网站造成过大的负荷。 一、线程基础 1、继承Thread方式的线程 当需要再此启动一个线程时需要再创建对象不能重复使用。 2、推荐的创建线程方式继承Runnalbe使用Thread类 1.5之前就这两种 callable 第三种 可以有返回值 call() 可以抛出异常 支持泛型返回值 需要借助FutureTask 如获取返回值的时候 class MyThread implements Callable{public Object call() throws Exception{....return null;} }MyThread thread new MyThread(); FutureTask f new FutureTask(thread); new Thread(f).start(); new Thread(f).start(); // 反复执行不会执行需要定义新的task try{Object ret f.get();// get()为返回值,会阻塞主线程执行 }catch(InterruptedException){}catch(Execution e){}线程池 第四种方式 提高速度降低资源消耗 便于线程管理核心池大小最大线程数没任务多长时间终止 //Executors 工具类 //ExecutorService 接口 ExecutorService service Executors.newFixedThreadPool(10); ThreadPoolExecutor executor (ThreadPoolExecutor)service; executor.setxxx() //设置参数 service.execute(Runnable); service.submit(Callable); service.shutdown();b 4、线程分类 守护线程用户线程 守护线程服务用户线程 thread.setDaemon(true) //设置为守护线程 最简单程序main主线程与gc回收线程 若没有用户线程jvm则结束 5、线程生命周期 NEW : 创建对象 RUNNABLE 运行 start BLOCKED阻塞 sleepjoin等待同步锁waitsuspend:过时方法 WAITINGwait() TIMED-WAITINGwait(time) TERMINATEDstopexceptionrun结束 阻塞—》就绪sleepjoin结束获取同步锁notifyresume过时方法 6、注意 wait阻塞会释放锁必须在synchronized内 sleep阻塞不会释放锁任何时候可以 wait,notify,notifyall,必须在同步方法快内方法内不能使用lock他们调用时是锁对象.wait要注意 此时syn(锁对象)两个所对象必须相同 二、线程同步 sync 与wait搭配notify搭配若与Lock搭配会造成异常 多用while不用if 同步代码块synchronized 自动锁 要求所有相乘同一把锁 synchronized(obj) obj是同一个对象或同一个类 同步方法当方法内容全部需要同步时 非静态方法锁即时this 需要注意 静态方法时锁时当前类本身 Lock 接口 1.5之后 condition 能够手动开启同步结束同步手动锁指定睡眠指定唤醒 实现类 ReentrantLock功能与synchronized可重入锁 ReentrantReadWriteLock.ReadLock有读锁的线程可以共享该方法几乎相当于没加锁 ReentrantReadWriteLock.WriteLock其他线程不共享该方法 ReentrantLock lock new ReentrantLock(); final Condition flag1lock.newCondition(); final Condition flag2lock.newCondition(); try{lock.lock();flag1.await();... }finally{lock.unlock(); } flag2.singal();三、线程通信 定制化通信 /* 例 * 切菜 * 炒菜 * 上菜 * 同时10道菜 */ // 这里就不能用sync需要定制化通信唤醒睡眠的线程 // 顺序线程 操作 资源类 CookingLockcondation flag1flag2flag3cut()cooking()gaving() Cookingnew thread(()-{for(int i0;i5;i)cooking.cut();}).start()new thread(()-{for(int i0;i5;i)cooking.cooking();}).start()new thread(()-{for(int i0;i5;i)cooking.giving();}).start()lambda表达式 接口可写静态方法实现 普通方法实现加default 关键字即可 四、JUC工具类 数据库中读写一般不是同步的 JUC中读写都是同步的即读写同步因为JVM线程必须加锁否则不安全比数据库严格 ReentraReadWriteLock读写锁写程序优先 CountDownLatch计数器 CountDown count new CountDown(10); count.await(); // 到此方法时会判断count里面的数值为0时继续主线程适用于秒杀业务CyclicBarrier循环栅栏多个线程处于同一状态时才继续CyclicBarrier任务。 CyclicBarrier cyc new CyclicBarrier(7,任务)for (int i0;i7;i)new Thread(){()-{xxxxxcyc.await(); }}Semaphere信号灯 Sempahere s new Semaphere(3);for (int i0;i7;i)new Thread(){()-{s.acquire();// 资源不够时会阻塞xxxxs.release();// 表示释放了资源}}
http://www.dnsts.com.cn/news/59166.html

相关文章:

  • 新手如何做服装网站WordPress免插件实现QQ咨询
  • 网站设计一般要求网站建设方案范文2000字
  • 中企动力中山分公司网站网站备案 互联网信息
  • 建设施工合同网站做网站比较好的数字
  • 打网站显示域名解析错误宣传类的网站怎么做
  • 网站建设收费价格深圳关键词优化报价
  • 微信上打开连接的网站怎么做的wordpress api下载文件
  • 梅州专业网站建设教程网站建设费用要多少
  • 怎么让百度收录网站所有网页你就知道
  • 常州高端模板建站wordpress 主题和插件
  • 网站建设招标合同要求聊城市网站建设公司
  • 做网站借用网络图片不违法吧wordpress页面模板目录文件
  • 上海网站排名seo公司哪家好wordpress 页面属性 模版
  • 揭阳网站建设托管wordpress 板块
  • 网站静态和伪静态意思dede网站幻灯片
  • 省建设厅网站安全生产标准化天津seo建站
  • 网页设计与网站建设在线作业设计单位在厦门什么网站
  • 网站内容建设注意事项网站建设推广咨询平台
  • 全美东莞网站建设网站 建设 计划
  • 南京专业网站制作多少钱wordpress智能
  • 重庆网站seo多少钱互联网营销案例
  • 郑州手机网站推广外包让别人看到自己做的网站
  • 如何建网站运营网站品牌创意型网站建设
  • 射阳网站开发天宁寺网站建设
  • 中国建设银行官网站e路护航下载网站建设好不好
  • 如何做地方网站制作ppt的网站
  • 企业网站建设网站模板wordpress+一页一屏
  • 宁波网站建设seowordpress有后台吗
  • 口碑好的高密网站建设清新织梦淘宝客模板淘客网站程序源码
  • 建站怎么建阿里云wordpress一键安装包