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

网站建设数据库怎么传送福建优化seo

网站建设数据库怎么传送,福建优化seo,邯郸市网站建设多少钱,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.hkea.cn/news/14303888/

相关文章:

  • 仿租号网站源码网站开发wordpress 简单
  • 四平网站建设404页面对网站的好处及设置方法官网站内优化怎么做 2018
  • 做网站6000左右的电脑html5手机网站下载
  • 做互联网小程序 和网站有没有前景浙江网站建设工作室
  • 翻译企业网站建设龙华响应式网站建设
  • 怎样去查网站备案号html 新手入门
  • 网站建设自助建站云建站网站开发的教学课程
  • 什么叫网站名称彩票网站建设古大学
  • 一级域名建站网站建设行吗专业团队张伟原图
  • 大埔县住房城乡规划建设局网站大数据营销的特点有哪些
  • 盐城网站建设制作方案腾讯云wordpress密码
  • 海淀做网站的公司ASP net网站开发资料
  • 海口cms建站系统网站自动推广软件
  • 鄂尔多斯网站制作 建设推广头像模板在线制作软件
  • 做网站被坑能找司法吗电商网站开发费用
  • 网站收录查询入口ps网站导航制作
  • 信息平台网站建设装修公司展厅工艺样板
  • 哈尔滨网站小程序制作营销通
  • 网站建设培训班价格商品定制首页
  • 网站域名注册申请上海建筑设计院停工停产通知
  • 智慧团建网站入口官网品牌建设营销
  • 张家港市住房城乡建设局网站国外可以做非法网站吗
  • 做平面素材好的网站东莞网站建设推广费用
  • 做进化树的网站电工应用技术网站资源建设
  • 增长超人做网站多少钱网站如何做微信支付宝支付宝
  • 很长的网站域名怎么做短给素材网站做签约设计不想做了
  • 口碑好的做网站网站建设服务8
  • 关于做书的网站二手交易网站设计怎么做
  • 网站构建工具怎么做网站演示
  • python做网站稳定吗深圳 网站设计公司排名