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

付网站建设服务费什么科目设计网站建设合同书

付网站建设服务费什么科目,设计网站建设合同书,云南信息发布平台,网站建设时间规划表java如何创建线程1. java如何创建线程1.1 通过继承Thread类来创建线程1.2 通过实现Runnable接口来创建线程1.3 通过匿名内部类来创建线程1.4 lambda表达式1.5 通过实现Runnable接口的方式创建线程目标类的优缺点1. java如何创建线程 一个线程在Java中使用一个Thread实例来描述… java如何创建线程1. java如何创建线程1.1 通过继承Thread类来创建线程1.2 通过实现Runnable接口来创建线程1.3 通过匿名内部类来创建线程1.4 lambda表达式1.5 通过实现Runnable接口的方式创建线程目标类的优缺点1. java如何创建线程 一个线程在Java中使用一个Thread实例来描述。Thread类是Java语言的一个重要的基础类位于java.lang包中。Thread类有不少非常重要的属性和方法用于存储和操作线程的描述信息. Thread类的构造方法 1.1 通过继承Thread类来创建线程 666 666 666 666 (1) 继承Thread类创建一个新的线程类。 (2) 同时重写run()方法将需要并发执行的业务代码编写在run()方法中。 代码写法如下: class MyThread extends Thread { //注释这个方法重写了父类方法Overridepublic void run() {//需要并发执行的代码System.out.println(hello t);} } public class ThreadDemo1 {//第一种写法是使用Thread的run描述线程入口public static void main(String[] args) {Thread t new MyThread();//向上转型t.start();//会创建新的线程System.out.println(hello main);} }此时我们可以运行一下: 此时呢~ 我们就通过start()创建了一个新的线程,并且由于我们调用了start(),所以系统自动帮我们调用了run(),此时的run()是执行在 t 线程里面的. 我们可以通过打开jconsole.exe 这个文件来查看我们java在执行期间运行的线程. 由于线程执行完就会结束,为了方便查看,我们写一个死循环来方便我们观看. 此时,红色框框里面的main线程就是我们的主线程,另一个Thread-0就是我们刚才创建的一个 t 线程,由于我们没有指定名字,所以这个线程名字默认从0往后递增~ 红色框框里面的两个构造方法是可以修改这个线程的名字的,先讲第一个红色框框里面的. 我们先在MyThread这个类中,通过快速创建构造方法,将可以传入名字参数的构造方法写出来. class MyThread extends Thread {//调用父类的构造方法public MyThread(String name) {super(name);}Overridepublic void run() {while (true){try {Thread.sleep(1000);} catch (InterruptedException e) {e.printStackTrace();}System.out.println(hello t);}} }此时呢?我们就可以对这个线程起名字了. 1.2 通过实现Runnable接口来创建线程 写一个类MyRunnable实现Runnable接口覆写run()方法创建MyRunnable对象runnable将runnable作为参数调用Thread有参构造创建线程thread调用start()启动线程。 我们先查看一下Runnable这个接口. Runnable有且仅有一个抽象方法 —— void run()代表被执行的用户业务逻辑的抽象在使用的时候将用户业务逻辑编写在Runnable实现类的run()方法中。当Runnable实例传入Thread实例的target属性后Runnable接口的run()的方法将被异步调用。 如何理解上面这句话呢? 我们先理解第一句话: 将用户业务逻辑编写在Runnable实现类的run()方法中. 由于我们的MyThread这个类实现了Runnable这个接口,所以我们需要重写这个接口里面的run()方法.如上图. 我们再来理解第二句话: 当Runnable实例传入Thread实例的target属性后Runnable接口的run()的方法将被异步调用。 首先呢?我们需要new一个Runnable的实例. MyRunnable myRunnable new MyRunnable();接着又讲到将Runnable的实例传入到Thread实例的target属性. target是什么? 在Thread类的run()方法中如果target执行目标不为空就执行target属性的run()方法。而target属性是Thread类的一个实例属性并且target属性的类型为Runnable。 此时我们的MyRunable的类型就是target的类型(Runnable),所以此时我们实例的 myrunable 就可以作为参数传入到Thread的构造方法中. class MyRunnable implements Runnable {Overridepublic void run() {while (true){try {Thread.sleep(1000);} catch (InterruptedException e) {e.printStackTrace();}System.out.println(hello t);}} } public class ThreadDemo2 {//第二种方法是使用Runnable interface(接口) 来描述线程入口public static void main(String[] args) {//先实例化一个实现Runnable接口的类MyRunnable myRunnable new MyRunnable();//将这个类的引用作为参数传入Thread的构造方法中Thread t new Thread(myRunnable);//此时可以通过start()创建一个线程,在这个线程中调用这个MyRunnable这个类中的run()方法.t.start();while (true) {try {Thread.sleep(1000);} catch (InterruptedException e) {e.printStackTrace();}System.out.println(hello main);}} } 当我们运行时: 当然,我们也可以自己指定线程名字,这里就不进行演示了. 1.3 通过匿名内部类来创建线程 因为有些线程是只需要调用一次的,所以我们可以通过匿名内部类这样的方式来进行run()的重写. 代码如下: 在实例化这个对象时,在其后面写入一个{},此时就可以在这个{}中写入自己需要的方法. 注意:此时这个类是一次性的类. 上述代码的运行结果是: 可能有人就会问了,你这次怎么没有main线程啊,其实是因为main线程在执行完t.start()之后后续就没有代码需要执行了,所以自然这个线程就结束了,于是就是我们上述看到的,只有 t 线程. 在实现Runnable编写target执行目标类时如果target实现类是一次性类可以使用匿名实例的形式。 public class ThreadDemo4 {public static void main(String[] args) {Thread t new Thread(new Runnable() {Overridepublic void run() {while (true) {System.out.println(hello t);try {Thread.sleep(1000);} catch (InterruptedException e) {e.printStackTrace();}}}});t.start();while (true) {try {Thread.sleep(1000);} catch (InterruptedException e) {e.printStackTrace();}System.out.println(hello main);}} } 1.4 lambda表达式 使用Lambda表达式优雅地创建Runnable线程目标类 我们通过观察这个Runnable接口可以发现,上面有一串注释,FunctionalInterface 这个注释的意思就是标记这个接口为函数式接口,在Java中“函数式接口”是有且仅有一个抽象方法的接口。反过来说如果一个接口中包含两个或两个以上的抽象方法就不能使用FunctionalInterface注解否则编译会报错。 Runnable接口是一个函数式接口在接口实现时可以使用Lambda表达式提供匿名实现编写出比较优雅的代码。 如果一个接口中有多个抽象方法那样没有办法使用Lambda表达式简化。 public static void main(String[] args) {//()里面放参数,{}里面放函数体Thread t new Thread(()-{while (true) {try {Thread.sleep(1000);} catch (InterruptedException e) {e.printStackTrace();}System.out.println(hello t);}},猪猪侠);t.start();while (true) {try {Thread.sleep(1000);} catch (InterruptedException e) {e.printStackTrace();}System.out.println(hello main);}}但是呢? 此时小鱼有一个问题问大家,大家对比五段代码,找到哪几个有错误并且说明错误原因. public class ThreadDemo5 { //例一static int count 0;public static void main(String[] args) {Thread t new Thread(()-{while (true){System.out.println(count);try {Thread.sleep(1000);} catch (InterruptedException e) {e.printStackTrace();}}});t.start();} }public class ThreadDemo5 {//例二public static void main(String[] args) {int count 0 ;Thread t new Thread(()-{while (true){System.out.println(count);try {Thread.sleep(1000);} catch (InterruptedException e) {e.printStackTrace();}}});count 5;t.start();} }public class ThreadDemo5 {//例三public static void main(String[] args) {int count 0 ;Thread t new Thread(()-{while (true){System.out.println(count);try {Thread.sleep(1000);} catch (InterruptedException e) {e.printStackTrace();}}});t.start();} }public class ThreadDemo5 {//例四public static void main(String[] args) {final int count 0 ;Thread t new Thread(()-{while (true){System.out.println(count);try {Thread.sleep(1000);} catch (InterruptedException e) {e.printStackTrace();}}});t.start();} }public class ThreadDemo5 {//例五public static void main(String[] args) {int count 0 ;Thread t new Thread(()-{while (true){System.out.println(count);try {Thread.sleep(1000);} catch (InterruptedException e) {e.printStackTrace();}}});t.start();} }(1) 第一个没有错误,由于count是成员变量,在线程中是共享资源,所以lambda表达式中是可以访问这个变量并且对其进行修改的. (2) 第二个有错误,Lambda 表达式(匿名类) 不能访问非 final 的局部变量 . 因为成员变量存在堆中而局部变量是在栈上分配存在于虚拟机栈的局部变量表中Lambda 表达(匿名类) 有可能会在另一个线程中执行。如果在线程中要直接访问一个局部变量可能线程执行时该局部变量已经被销毁了而 final 类型的局部变量在 Lambda 表达式(匿名类) 中其实是局部变量的一个拷贝 (3) 第三个没有错误,虽然我们的count是局部变量,但是由于我们的代码并未有对该变量进行后续的修改,我们可以称这个count变量为实际final,意思就是虽然没有被final修饰,但是由于并没有修改这个变量的值,所以在lambda表达式中可以使用. (4) 没有问题 (5) 错误,lambda表达式不能修改局部变量.原因如下: lambda表达式不能修改局部变量 1.5 通过实现Runnable接口的方式创建线程目标类的优缺点 通过实现Runnable接口的方式创建线程目标类有以下缺点 所创建的类并不是线程类而是线程的target执行目标类需要将其实例作为参数传入线程类的构造器才能创建真正的线程。 如果访问当前线程的属性不能直接访问Thread的实例方法必须通过Thread.currentThread()获取当前线程实例才能访问和控制当前线程。 通过实现Runnable接口的方式创建线程目标类有以下优点 可以避免由于Java单继承带来的局限性。如果异步逻辑所在类已经继承了一个基类就没有办法再继承Thread类。比如当一个Cat类继承了Animal类再要继承Thread类就不行了。所以在已经存在继承关系的情况下只能使用实现Runnable接口的方式。 逻辑和数据更好分离。通过实现Runnable接口的方法创建多线程更加适合同一个资源被多段业务逻辑并行处理的场景。在同一个资源被多个线程逻辑异步、并行处理的场景中通过实现Runnable接口的方式设计多个target执行目标类可以更加方便、清晰地将执行逻辑和数据存储分离更好地体现了面向对象的设计思想。
文章转载自:
http://www.morning.rxwfg.cn.gov.cn.rxwfg.cn
http://www.morning.msgcj.cn.gov.cn.msgcj.cn
http://www.morning.plfy.cn.gov.cn.plfy.cn
http://www.morning.xsklp.cn.gov.cn.xsklp.cn
http://www.morning.sgbss.cn.gov.cn.sgbss.cn
http://www.morning.pctsq.cn.gov.cn.pctsq.cn
http://www.morning.ylmxs.cn.gov.cn.ylmxs.cn
http://www.morning.yfmlj.cn.gov.cn.yfmlj.cn
http://www.morning.hhmfp.cn.gov.cn.hhmfp.cn
http://www.morning.dfckx.cn.gov.cn.dfckx.cn
http://www.morning.pnfwd.cn.gov.cn.pnfwd.cn
http://www.morning.ldpjm.cn.gov.cn.ldpjm.cn
http://www.morning.c7495.cn.gov.cn.c7495.cn
http://www.morning.fbzdn.cn.gov.cn.fbzdn.cn
http://www.morning.yqqxj26.cn.gov.cn.yqqxj26.cn
http://www.morning.qlsyf.cn.gov.cn.qlsyf.cn
http://www.morning.grxbw.cn.gov.cn.grxbw.cn
http://www.morning.mdmc.cn.gov.cn.mdmc.cn
http://www.morning.gynls.cn.gov.cn.gynls.cn
http://www.morning.fxwkl.cn.gov.cn.fxwkl.cn
http://www.morning.hfbtt.cn.gov.cn.hfbtt.cn
http://www.morning.pqcsx.cn.gov.cn.pqcsx.cn
http://www.morning.jrlxz.cn.gov.cn.jrlxz.cn
http://www.morning.drytb.cn.gov.cn.drytb.cn
http://www.morning.hpkr.cn.gov.cn.hpkr.cn
http://www.morning.bgqr.cn.gov.cn.bgqr.cn
http://www.morning.hmbtb.cn.gov.cn.hmbtb.cn
http://www.morning.xsymm.cn.gov.cn.xsymm.cn
http://www.morning.kybpj.cn.gov.cn.kybpj.cn
http://www.morning.jzxqj.cn.gov.cn.jzxqj.cn
http://www.morning.zwznz.cn.gov.cn.zwznz.cn
http://www.morning.ktlfb.cn.gov.cn.ktlfb.cn
http://www.morning.fqqcn.cn.gov.cn.fqqcn.cn
http://www.morning.smzr.cn.gov.cn.smzr.cn
http://www.morning.ccjhr.cn.gov.cn.ccjhr.cn
http://www.morning.irqlul.cn.gov.cn.irqlul.cn
http://www.morning.pxmyw.cn.gov.cn.pxmyw.cn
http://www.morning.mehrim.com.gov.cn.mehrim.com
http://www.morning.bpmnq.cn.gov.cn.bpmnq.cn
http://www.morning.bgpch.cn.gov.cn.bgpch.cn
http://www.morning.kqrql.cn.gov.cn.kqrql.cn
http://www.morning.spkw.cn.gov.cn.spkw.cn
http://www.morning.ksgjy.cn.gov.cn.ksgjy.cn
http://www.morning.bmlcy.cn.gov.cn.bmlcy.cn
http://www.morning.zryf.cn.gov.cn.zryf.cn
http://www.morning.rwwdp.cn.gov.cn.rwwdp.cn
http://www.morning.mhlkc.cn.gov.cn.mhlkc.cn
http://www.morning.grlth.cn.gov.cn.grlth.cn
http://www.morning.rhmt.cn.gov.cn.rhmt.cn
http://www.morning.xtrnx.cn.gov.cn.xtrnx.cn
http://www.morning.ydmml.cn.gov.cn.ydmml.cn
http://www.morning.rgrdd.cn.gov.cn.rgrdd.cn
http://www.morning.bxyzr.cn.gov.cn.bxyzr.cn
http://www.morning.qnxkm.cn.gov.cn.qnxkm.cn
http://www.morning.jfjpn.cn.gov.cn.jfjpn.cn
http://www.morning.ctrkh.cn.gov.cn.ctrkh.cn
http://www.morning.kklwz.cn.gov.cn.kklwz.cn
http://www.morning.fldk.cn.gov.cn.fldk.cn
http://www.morning.zshuhd015.cn.gov.cn.zshuhd015.cn
http://www.morning.ptmgq.cn.gov.cn.ptmgq.cn
http://www.morning.rywr.cn.gov.cn.rywr.cn
http://www.morning.dbhnx.cn.gov.cn.dbhnx.cn
http://www.morning.yqqxj26.cn.gov.cn.yqqxj26.cn
http://www.morning.mkkcr.cn.gov.cn.mkkcr.cn
http://www.morning.wjqyt.cn.gov.cn.wjqyt.cn
http://www.morning.yjfmj.cn.gov.cn.yjfmj.cn
http://www.morning.fsrtm.cn.gov.cn.fsrtm.cn
http://www.morning.gqflj.cn.gov.cn.gqflj.cn
http://www.morning.ruifund.com.gov.cn.ruifund.com
http://www.morning.zdbfl.cn.gov.cn.zdbfl.cn
http://www.morning.amlutsp.cn.gov.cn.amlutsp.cn
http://www.morning.ygkq.cn.gov.cn.ygkq.cn
http://www.morning.zlhbg.cn.gov.cn.zlhbg.cn
http://www.morning.qyfqx.cn.gov.cn.qyfqx.cn
http://www.morning.wdqhg.cn.gov.cn.wdqhg.cn
http://www.morning.yfpnl.cn.gov.cn.yfpnl.cn
http://www.morning.dangaw.com.gov.cn.dangaw.com
http://www.morning.ljllt.cn.gov.cn.ljllt.cn
http://www.morning.gmgyt.cn.gov.cn.gmgyt.cn
http://www.morning.kjrlp.cn.gov.cn.kjrlp.cn
http://www.tj-hxxt.cn/news/246750.html

相关文章:

  • 常州网站排名优化wordpress 访客统计插件
  • 上海有多少家网站建设公司推广一个网站需要什么
  • 健身网站怎么做超级ppt市场免费模板
  • 网站学什么网站建设总结ppt
  • 杭州专业做网站宝洁网站建设
  • 网站规划的基本原则阿里巴巴外贸平台一年多少钱
  • 企业公司网站管理系统龙岗网站改版
  • 公司网站制作哪家公司好网站留言表格怎么做
  • 南京公共工程建设中心网站小程序商城有哪些平台
  • 汕头网站制作开发回收手机的网站哪家好
  • 佛山网站设计优化公司当前主流的网站开发语言
  • 管局备案网站手表商城
  • 做个网站费用外贸电商
  • 滨州网站开发公司做我的狗漫画网站
  • 效果图网站推荐大全香水推广软文
  • 张家界网站定制大连品牌网站建设公司
  • 易讯网站建设电子商务公司网站怎么建
  • 房地产网站编辑国外营销网站建设
  • 苏州营销型网站建设方法兰州 网站制作
  • 企业网站颜色选择织梦可以做大型网站吗
  • 深圳网站开发运营公司西安网站有哪些手续费
  • 单位网站建设必要性jquery
  • 医院网站建设意义网站关停怎么做
  • 网站开发流程的意义网站开发人员招聘it管理
  • 使用wordpress做网站注册公司带科技两个字的条件
  • 杭州市建设工程造价管理协会网站网络推广方案下拉管家微xiala11
  • 内网网站如何建设均安网站建设
  • 网站首页制作教程视频网络架构种类
  • 石家庄做网站比较好的公司有哪些互联网营销工具有哪些
  • h5网站用什么软件做公司宣传册ppt