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

wordpress网仿站怎样自学做网站

wordpress网仿站,怎样自学做网站,广告公司广告语,空包网站建设文章目录 1.线程的概念2.休眠里面的异常处理3.实现runnable接口4.匿名内部类子类创建线程5.匿名内部类接口创建线程6.基于lambda表达式进行线程创建7.关于Thread的其他的使用方法7.1线程的名字7.2设置为前台线程7.3判断线程是否存活 8.创建线程方法总结9.start方法10.终止… 文章目录 1.线程的概念2.休眠里面的异常处理3.实现runnable接口4.匿名内部类子类创建线程5.匿名内部类接口创建线程6.基于lambda表达式进行线程创建7.关于Thread的其他的使用方法7.1线程的名字7.2设置为前台线程7.3判断线程是否存活 8.创建线程方法总结9.start方法10.终止中断线程-interrupt10.1自定义标志位10.2使用系统里面的标志位 11.线程等待join12.线程方法总结11.线程等待join12.线程方法总结 1.线程的概念 下面的这个图片里面的代码有错误我们new的这个mythread类的对象应该是使用这个Thread这个类进行接收这个是个向上转型的过程 我们的这个里面使用到了这个thread类但是不需要进行这个import的操作这个主要就是因为我们的这个Thread是位于这个java.lang这个包下面的像我们之前使用的这个String也是在这个包下面我们也没有进行这个import的操作这个Thread里面是有这个run方法的我们的这个mythread类里面对于这个夫类里面的方法进行了重写我们的main方法里面执行这个start时候就会进入这个run入口进而对于这个内容进行打印输出 实际上打印输出的时候main方法里面的内容和我们的自定义类里面的这个内容是独立进行的两个并不会相互依赖每一个线程都是一个独立的执行流 当我们把这个start修改为这个run之后这个就会先去执行我们自己的自定义类里面的这个重写的run方法这个执行完成之后才会继续执行这个下面的helli main打印输出但是因为我们的这个是死循环因此这个会一直打印输出我们的hello thread; 2.休眠里面的异常处理 为了更加清楚的看到这个打印的效果我们可以对于这个程序进行休眠操作就是使用这个sleep方法但是这个方法在进行使用的时候可能会出现一些问题就是异常情况针对于自定义类和main方法里面的异常我们的处理手段是不一样的 下面的这个异常是受查异常需要进行显示处理要么throws要么try-catch 重写父类的方法父类的方法里面没有throws因此我们不可以throws; 相比之下在这个main里面的这个内容都是我们自己写的因此这个时候我们就可以使用这个throws方法对于这个出现的异常进行抛出 有了上面的两个休眠的操作这个时候我们重新运行这个程序这个时候就会发现这个两个语句的打印输出的速度就变慢了但是这个出现的先后顺序其实并不是确定的这个主要取决于我们的操作系统对于这个线程的调度调度器的具体实现因此我们可以看到有的时候是这个hello thread先打印输出但是有的时候是这个hello main先打印输出 3.实现runnable接口 下面的这个就是实现我们的这个runnable接口的方式两个类里面的这个异常的处理方式还是一样的一个是捕捉异常一个就是抛出异常 但是在这个主方法里面我们使用这个已有的MyRunnable类实例化对象相当于是定义了一个任务然后我们吧这个传递到我们的这个new Thread这个参数里面去相当于就是使用这个Thread去执行这个任务其他的和上面的这个方式是没有任何区别的 针对于这个方式实现了这个runnable接口的这个类的实例化对象作为我们的这个Thread接口的构造方法的参数这个和上面最大的不同就是解耦合耦合指的就是我们的一个程序里面的不同模块之间的影响的程序解耦合就是解除不同的模块之间的相互的影响 这样的解耦合的好处就是我们只是定义了这个任务但是交给谁去执行这个任务就没那么重要了这个就是这个实现接口的方式和上面的最大不同 4.匿名内部类子类创建线程 public class Test {public static void main(String[] args) throws InterruptedException {//匿名内部类不知道这个类叫什么但是知道这个类是我们的Thread的子类//不知道这个类的名字也不重要因为这个类我们只会使用一次//下面的这个new后面的这个其实就可以理解为是一个类使用这个没有名字的类实例化对象在这个匿名的类里面对于这个方法进行重写里面的这个对于异常的处理和定义两个类的时候是一样的Thread t new Thread(){Overridepublic void run() {while(true){System.out.println(hello thread!);try {Thread.sleep(1000);} catch (InterruptedException e) {throw new RuntimeException(e);}}}};//使用我们创建的这个线程去开始这个线程的执行start就是这个线程执行的入口t.start();while(true){System.out.println(hello main!);Thread.sleep(1000);}} }5.匿名内部类接口创建线程 public class Test {public static void main(String[] args) throws InterruptedException {//匿名内部类不知道这个类叫什么但是知道这个类是我们的Thread的子类//不知道这个类的名字也不重要因为这个类我们只会使用一次//下面的这个就是我们不知道这个类叫什么名字但是这个类实现了这个接口Runnable//因此在这个匿名内部类里面对于这个接口里面的方法进行了重写Runnable runnable new Runnable() {Overridepublic void run() {while(true){System.out.println(hello thread!);try {Thread.sleep(1000);} catch (InterruptedException e) {throw new RuntimeException(e);}}}};//这个就是我们的这个实现接口的类的实例化对象作为一个参数进行传递Thread tnew Thread(runnable);t.start();while(true){System.out.println(hello main!);Thread.sleep(1000);}} }6.基于lambda表达式进行线程创建 lambda实际上是这个匿名内部类的一个简化的方式本质上就是一个函数表达式 public class test {public static void main(String[] args) throws InterruptedException {//lambda表达式是一个匿名函数主要是实现回调函数的效果//回调函数是计算机里面的一个很重要的术语//回调函数--函数指针函数指针实现转移表减少if-else分支数目//使用函数指针作为回调函数--实现qsort()的比较//其实这个lambda表达式并不是很复杂形式上就是这个()-{},我们的这个相关的代码就是写在这个大括号 里面的Thread t new Thread(()-{while(true){System.out.println(hello thread!);try {Thread.sleep(1000);} catch (InterruptedException e) {throw new RuntimeException(e);}}});t.start();while(true){System.out.println(hello main!);Thread.sleep(1000);}} }7.关于Thread的其他的使用方法 上面我们介绍两个 1.直接调用无参数的就是我们最开始介绍的 2.传递的参数是我们的实现接口的类的实例化对象 除此之外我们还可以传递name参数给这个线程起名字对于线程进行区分 7.1线程的名字 public class Test {public static void main(String[] args) {//String name;Thread t new Thread(() - {while(true){System.out.println(hello thread!);try {Thread.sleep(1000);} catch (InterruptedException e) {e.printStackTrace();}}},这个是新的线程 );//上面的这个就是相当于是在原来的这个表达式的后面多了这个name属性这样我们使用这个jconsole工具 进行查看的时候我们就可以看到自己对于这个线程的命名了t.start();} }7.2设置为前台线程 还是上面的这个程序其实在这个默认的情况下这个线程就是前台线程就是我们的这个线程不结束这个程序就不会结束但是我们的后台线程就是这个线程结束与否对于我们的整个程序的结束没有影响 这个默认情况下是前台线程我们可以使用这个setDaemon方法把这个线程设置为后台的线程 我们的这个具体的差别可以在打印的时候看出来就是我们的这个内容好像没有进行打印这个程序就结束了 public class Test {public static void main(String[] args) {//String name;Thread t new Thread(() - {while(true){System.out.println(hello thread!);try {Thread.sleep(1000);} catch (InterruptedException e) {e.printStackTrace();}}},这个是新的线程 );//设置为后台的线程运行起来就不会进行打印t.setDaemon(true);t.start();} }7.3判断线程是否存活 这个就是使用的t.isAlive方法判断这个线程是不是存活的下面的这个使用start开始的时候就是存活的线程打印输出的结果就是true但是休眠之后这个就是死亡的打印输出false public class Test {public static void main(String[] args) throws InterruptedException {Thread t new Thread(()-{System.out.println(线程开始);try {Thread.sleep(1000);} catch (InterruptedException e) {e.printStackTrace();}System.out.println(线程结束);});t.start();System.out.println(t.isAlive());Thread.sleep(2000);System.out.println(t.isAlive());} }8.创建线程方法总结 9.start方法 start和run方法的区别 我们的start方法会去调用这个系统里面的api,进行线程的创建 run只会去执行这个线程里面的内容会在这个start创建线程之后自动被调用 两个的本质区别就是是不是调用了这个系统里面的api创建出来了新的线程 10.终止中断线程-interrupt 10.1自定义标志位 需要注意的就是这个自定义的静态的变量需要是全局的不可以是局部的因为这个lambda是变量的捕捉这个变量需要是这个final或者是视为这个final的变量 我们的这个变量一旦写作这个局部的这个时候我们下面不可以进行修改了但是我们的有修改所以写成局部的就会报错大家可以自己去尝试一下看看这个效果这个主要是lambda的语法导致的 10.2使用系统里面的标志位 为什么会有下面的这个因为上面的存在缺陷就是我们需要手动创建而且我们的线程如果正在休眠我们把这个标志位修改掉这个线程无法及时的做出回应或者是叫做响应 但是如果我们使用这个系统里面的标志位这个就是currentThread().isInterrupted()方法进行判断当前的这个线程是不是被打断了 我们的这个里面有一个t.sleep()这个方法就是进行线程的唤醒上面的这个手动创建标志位的方法如果我们的这个线程在休眠这个时候不可以及时的进行响应但是我们的这个interrupt这个方法就会触发这个线程的异常让这个休眠的线程提前被唤醒但是我们在运行的时候会发现这个会抛出异常之后还是会继续执行的 这个主要原因就是我们的interrupt唤醒这个线程之后我们的异常抛出把这个设置的标志位清除掉了就是我们的自动设置的标志位没有了效果我们的异常让这个标志位的效果失效了接下来线程可以自己决定接下来如何进行处理 11.线程等待join 下面的这个程序就是我们的t线程会休眠我们的t.join就会让这个主线程等待我们的t线程直到我们的t线程执行结束主线程才会结束 12.线程方法总结 动设置的标志位没有了效果我们的异常让这个标志位的效果失效了接下来线程可以自己决定接下来如何进行处理 11.线程等待join 下面的这个程序就是我们的t线程会休眠我们的t.join就会让这个主线程等待我们的t线程直到我们的t线程执行结束主线程才会结束 12.线程方法总结
http://www.zqtcl.cn/news/471879/

相关文章:

  • 书画院网站源码网站百度指数
  • 网页设计与网站开发第三版课后答案网络运营商是干嘛的
  • wordpress分类目录网站主题自己做营销型网站
  • 简述网站推广的五要素seo排名软件怎么做
  • 做网站能做职业吗织梦如何做几种语言的网站
  • 手机网站定制咨询如何修改网站
  • 长沙大型网站建设公司建站工作室源码
  • 找设计方案的网站专注南昌网站建设
  • UE做的比较好的网站汕头网站关键词优化教程
  • 做羞羞的事情网站广州番禺招聘网最新招聘信息
  • 网站基础开发成本网站建设策划包括哪些内容
  • 商务网站建设哪家好绍兴网站建设做网站
  • 网站域名管理东莞网页设计和网页制作
  • 网站建设与制作报价网站app制作
  • 下载可以做动漫的我的世界视频网站长沙网站seo技巧
  • 汕头网站制作推荐制作影视视频的软件
  • 定制程序网站宁波英文网站建设
  • 安康公司做网站网页设计怎么设计
  • 小型企业网站系统南京seo外包平台
  • 曲靖网站制作邢台网站制作那家便宜
  • wordpress中portfolio重庆网站seo按天计费
  • 做淘客网站需要多大的空间工程公司名称大全简单大气
  • 康县建设局网站网站做优化
  • 笔记网站开发代码下载了wordpress后
  • 北京招聘高级网站开发工程师域名最新通知
  • 企业如何实现高端网站建设西安百度推广开户
  • 广西城乡住房建设厅网站首页本地 安装 WordPress主题
  • 网站开发 技术方案设计一个软件需要多少钱
  • 网站如何做死链接提交建设银行网站官网网址
  • 网站难做吗承德平台