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

如何做外贸品牌网站暴雪回归

如何做外贸品牌网站,暴雪回归,门户网站啥意思,深圳最大的软件开发公司1 多线程--初步【1进程比如#xff1a;QQ、迅雷、360、飞秋...2线程的概念3线程的意义#xff1a;4.Java程序的运行原理代码是运行在线程中的#xff0c;如果一个进程没有线程#xff0c;那么进程就结束了#xff0c;也就是说一个进程至少要有一个线程当开启一个Java…1      多线程--初步【1进程比如QQ、迅雷、360、飞秋...2线程的概念3线程的意义4.Java程序的运行原理代码是运行在线程中的如果一个进程没有线程那么进程就结束了也就是说一个进程至少要有一个线程当开启一个Java程序之后在进程中至少会自动创建两个线程主线程、垃圾回收线程实际上使用多线程并不是为了提高程序运行的速度而是为了提高CPU的使用率多线程在进程中同时执行着多个执行路径并且多个线程(执行路径)之间互不干扰使用场景迅雷下载、360多个任务的执行、QQ视屏和文件传输………】【for(int i10;i100;i10){System.out.println(洗衣服进度i%);Thread.sleep(500);}for(int i0;i100;i10){System.out.println(做饭,进度i%);Thread.sleep(500);}//创建WashThread wash newWashThread();CookThread cook newCookThread();//启动wash.start();cook.start();for(inti10;i100;i10){System.out.println(微波炉加热进度i%);try {Thread.sleep(500);} catch(InterruptedException e) {// TODOAuto-generated catch blocke.printStackTrace();}}//每隔10秒打印Hello,同时可以接受用户输入并打印出来Scanner s newScanner(System.in);PrintThread t newPrintThread();t.start();while(true){String line s.nextLine();System.out.println(line);}//选择性学习LagRunnable r newLagRunnable();ExecutorService service Executors.newCachedThreadPool();service.execute(r);service.execute(r);service.execute(r);service.shutdown();//**************************************FileReader fr newFileReader(g:/config.txt);BufferedReader br newBufferedReader(fr);//               ReverseRunnable r newReverseRunnable();String name br.readLine();Class clz Class.forName(name);Runnable r(Runnable)clz.newInstance();//**************************************//以上部分选择性学习扩展内容Thread t new Thread(r);t.start();】进程运行起来的程序线程可以理解为一个子进程进程间进行切换的代价较大不能共享资源线程间切换代价小可以共享数据和逻辑Java进程每运行一个java应用程序就会启动一个虚拟机进程我们的程序就在其中运行Java线程每个java进程中都默认有一个主线程名字为main(我们之前的程序都是在主线程中执行)Thread类java中的线程在一个线程中的代码逻辑就像被一根线串起来一样从前往后顺序执行的节省时间、避免程序阻塞带来的问题分时复用多个线程不停地快速切换使用CPU表面上看是同时执行其实也是有先后顺序的同一时间只有一个线程占有CPU。创建--就绪--运行--结束运行--阻塞--〉就绪【假如当前计算机只有一个CPU且只有一个核心那么CPU在某一个时刻只能执行一条指令线程只有得到CPU时间片也就是使用权才可以执行指令那么Java是如何对线程进行调用的呢】抢占调度模型优先让优先级高的线程使用CPU如果线程的优先级相同那么会随机选择一个优先级高的线程获取CPU时间片相对多一些Java使用的是抢占式调度模型优先级获取CPU资源的几率优先级越高的线程会获取越多的运行机会优先级的取值范围是1-10之间的整数Java将差别最大的三个优先级定义成了Thread类中的静态常量MAX_PRIORITY最高优先级(10)MIN_PRIORITY最低优先级(1)NORM_PRIORITY默认优先级(5)可以通过setPriority()和getPriority()方法进行设置和获取【线程的创建和使用在Java中一切皆对象线程这一类事物也用了一个类来进行了描述这个类叫做Thread类线程的创建1、继承Thread类2、实现Runnable接口1、 通过继承Thread类会出现单继承的问题通过实现Runnable接口可以避免单继承的不足2、 通过实现Runnable接口可以将线程的任务从线程的子类中分离出来进行单独的封装按照面向对象的思想将任务封装成了对象并且可以方便实现多个线程的数据共享】1、定义一个类继承Thread,重写父类的run()方法在run()中写上要在子线程中执行的逻辑2、创建定义好的类生成一个实例3、调用这个实例的start(),启动线程(不要调用run(),这个run()是一个回调方法)1、定义一个类实现Runnable接口实现抽象方法run()在run()中写上要在子线程中执行的逻辑2、创建一个Thread实例从构造方法参数传入1中定义类的实例3、调用start()Runnable方式从设计上耦合度更低更灵活【Overridepublic void run() {int progress 0;  //初始化为0while(true){System.out.println(Thread.currentThread().getName()烧饭进度progress%);if(progress 100){//进度到100停止循环break;}try {Thread.sleep(100);} catch(InterruptedException e) {// TODOAuto-generated catch blocke.printStackTrace();}progress;   //每次进度1}}Threadt1 new Thread(new CookRunnable());t1.start();Thread t2 new Thread(newCookRunnable());t2.start();CookRunnablernewCookRunnable();Threadt1newThread(r);//两个线程使用同一个Runnable对象Threadt2newThread(r);//以下方式不能共享因为是分别使用了两个Runnable对象的两个progress属性/* Thread t1 new Thread(newCookRunnable());Thread t2 new Thread(newCookRunnable());*/t1.start();//启动try{Thread.sleep(50);//错开50毫秒}catch(InterruptedExceptione) {//TODOAuto-generated catch blocke.printStackTrace();}t2.start();//启动另一个线程}】1、局部变量不能被多个线程共享2、成员变量可以被线程共享【Thread t new Thread(new Runnable() {Overridepublicvoid run() {System.out.println(开始睡眠);try{Thread.sleep(20000);//睡眠20秒}catch (InterruptedException e) {//TODO Auto-generated catch blockSystem.out.println(睡到一半被断了);}System.out.println(结束睡眠);}});t.start();try{Thread.sleep(5000);}catch (InterruptedException e) {//TODO Auto-generated catch blocke.printStackTrace();}t.interrupt();//启动子线程5秒后打断它的睡眠}】线程的优先级:【t2.setPriority(10);t1.start();t2.start();】Stop方法让线程停下【public class CycleRunnable implements Runnable{privateboolean control true;publicvoid setControl(boolean control) {this.control control;}Overridepublicvoid run() {while(control){try{Thread.sleep(3000);}catch (InterruptedException e) {//TODO Auto-generated catch blocke.printStackTrace();}}}}publicstatic void main(String[] args) {CycleRunnabler new CycleRunnable();Threadt new Thread(r);t.setName(停不下来的线程);//设置线程名字t.start();Scanners new Scanner(System.in);while(true){Stringline s.nextLine();System.out.println(lineline);if(line.equals(stop)){r.setControl(false);break;}}}】礼让Yield()【Thread t2 new Thread(new Runnable() {Overridepublicvoid run() {for(inti1;i1000;i){System.out.println(      i);Thread.yield();//让给别的线程使用CPU//让当前正在执行的线程释放CPU资源让其他线程有机会去抢占CPU资源//有可能在释放CPU资源之后立马自己又再抢到了CPU资源}}});】Thread.currentThread()通过Thread的静态方法获得当前线程的对象还可以调用这个对象的getName()方法获取其名字Thread.sleep(longm)通过这个静态方法可以睡眠m毫秒当前线程睡眠setName(Stringn)设置线程名intgetPriority()获取优先级数字越大优先级越高优先级高则抢占CPU成功的概率高一些优先级范围1-10默认5setPriority(intp)设置优先级yield()让出CPU使用权但可以马上再抢回来interrupt()方法能打断一个线程sleep()、wait()、join()等方法能让这些方法抛出InterruptedExceptionjoin()会合等待子线程直到它结束加入当前正在运行的线程等待加入的线程执行完再继续执行被加入的线程setDaemon(boolean)方法将指定的线程设置为后台线程设置守护线程所有前台线程都结束后后台线程(守护线程)会自动结束该方法要在start()方法之前调用线程加入【public class ThreadJoinDemo{public static void main(String[] args) throwsInterruptedException {//线程加入ThreadJoin t1 new ThreadJoin(线程A);ThreadJoin t2 new ThreadJoin(线程B);ThreadJoin t3 new ThreadJoin(线程C);t1.start();/*** 加入线程让指定的线程(t1)加入到当前正在运行的线程(主线程)中* 并且保证指定的线程执行完之后在继续执行当前线程*/t2.start();t1.join();t3.start();}}class ThreadJoin extends Thread{public ThreadJoin(String name){super(name);}public void run(){for(int i0;i10;i){try {Thread.sleep(500);System.out.println(Thread.currentThread().getName().......i);} catch (InterruptedException e) {e.printStackTrace();}}}}】守护线程(后台线程)【public classThreadDaemonDemo {public static void main(String[] args) throwsInterruptedException {// 设置守护线程ThreadDaemon t1 new ThreadDaemon(线程A);ThreadDaemon t2 new ThreadDaemon(线程B);ThreadDaemon t3 new ThreadDaemon(线程C);t1.start();Thread.sleep(5000);/** 设置守护线程(后台线程)* 开启的线程默认都是前台线程可以通过setDaemon(boolean)方法将指定线程设置为后台线程* 当所有前台线程都结束之后后台线程会自动结束(无论有没有执行完)** 现在t1和主线程是前台线程而t2和t3被设置为后台线程也就是说当t1和主线程都结束之后* 也就代表前台线程全部结束了那么两个后台线程(t2和t3)会自动结束*/t2.setDaemon(true);t3.setDaemon(true);t2.start();t3.start();}}class ThreadDaemon extendsThread {public ThreadDaemon(String name) {super(name);}Overridepublic void run() {for (int i 1; i 20; i) {try {Thread.sleep(500);System.out.println(getName() ... i);} catch (InterruptedException e) {e.printStackTrace();}}}}】线程停止【public class ThreadStop {public static void main(String[] args) throwsInterruptedException {Stops t1 new Stops(线程A);t1.start();// 3秒之后停止子线程运行Thread.sleep(3000);// 1)使用stop方法// t1.stop();// 2)设置标记// 停止线程最本质的原理其实就是让run()方法执行完// t1.setFlag(false);// 3)使用interrupt方法t1.interrupt();// System.out.println(结束线程);}}class Stops extends Thread{private boolean runFlag true;public Stops(String name){super(name);}Overridepublic void run() {// while(flag) {while(!isInterrupted()) { // 判断中断标记是否为trueSystem.out.println(子线程...);try {/** 阻塞状态会被中断标记终止如果是被强制终止阻塞状态的话会抛出中断异常(InterruptedException)* 并且在结束阻塞状态之后会清除中断标记(也就是说isInterrupted()返回值为false)*/Thread.sleep(6000);} catch (InterruptedException e) {//打印异常信息// e.printStackTrace();break;}}System.out.println(线程已经运行完毕...);}public  voidsetFlag(boolean flag){this.runFlag flag;}}】1.stop()方法不建议使用,要让线程结束就让它执行完;可以使用一个条件变量作为线程中循环条件然后在外界通过控制这个变量来使得线程结束(终止线程已被废弃不推荐使用)2、设置标记3.interrupt():中断线程的阻塞状态调用该方法之后线程会标记一个中断标记当线程处于阻塞(比如休眠) 状态时如果线程具备中断状态就会直接中断当前的阻塞状态并去除中断标记(isInterrupted()测试线程是否已经中断)PS停止线程最本质的原理其实就是让run()方法执行完生命周期生命周期从创建到结束的整个过程在这期间会包含很多阶段(状态)新建状态(New):MyThread  t1 new MyThread();就绪状态(Runnable):调用start()方法,使线程具有了运行资格但是没有CPU的执行权(就绪队列:CPU在分配执行权的时候是在就绪队列中随机和挑选一个线程并分配其执行权(CPU调度))等待CPU调度运行状态(Running):获取了CPU的执行权只有在运行状态下的线程才具备CPU的执行权阻塞状态(Blocked):在运行状态下调用了sleep、wait或其他的一切方法使线程进入阻塞状态(睡眠池、等待池)【sleep(毫秒值)《睡眠池一块内存池集合对象或数组》   wait()《等待池》】《睡眠结束(时间结束或被中断)被唤醒(notify) -à会再次进入就绪状态》死亡状态(Dead):stop()    run()执行完《线程一旦结束进入死亡之后就没有用了该状态是不可逆的》
http://wiki.neutronadmin.com/news/152421/

相关文章:

  • 济南手机网站开发廖珍琴建盏简介
  • 网站推广智选刺盾云下拉广安网站建设公司
  • 自己做视频的网站wordpress墨客吧
  • 终身免费vps重庆网站建设seo公司哪家好
  • 网站宽度一般是多少肇庆建设工程备案的网站
  • 网站 字号 英文广东网络推广服务
  • 门户网站创建西安官网seo
  • sql数据库做的网站怎么发布个人网站设计模板下载
  • 诸城做网站找个人手机端购物网站模板下载
  • 桐梓网站开发营销策划公司品牌
  • 网站模板怎么修改教程官网订机票
  • 成都营销型网站建设重庆装修公司避坑指南
  • 门户网站域名是什么廊坊住房和城乡建设厅网站
  • 郑州做网站推广资讯门户网站和部门网站的区别
  • 然后搭建网站汽车宣传网站模板
  • 网站多页面布局网站优化课程
  • 网站开发语言排行榜克隆网站怎么做
  • 海珠建网站的公司全屋整装定制
  • 免费建立网站论坛佛山网络公司培训
  • 中小企业网站建设如何wordpress登入不了
  • 做网站选什么专业wordpress中文tag插件
  • 网站建设费计入什么科目九江网络营销
  • 洱源名师工作室网站建设化妆品网站 源码
  • 可以做热图的在线网站哈尔滨网站设计哪家公司好
  • 深圳大鹏住房和建设局网站常见网站颜色搭配
  • 全球做的比较好的网站有哪些视觉设计方案
  • 自贡网站建设室内装潢
  • 网站制作引擎软件开发和软件研发
  • 网站收录查询平台网站制作文案杭州
  • 电商网站开发 知乎简单静态网站模板