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

招标网站排名前十名同城推广有什么平台

招标网站排名前十名,同城推广有什么平台,增加网站点击量,做推广网站哪家好线程:是一个程序内部的一条执行流程。 多线程:是指从软硬件上实现的多条执行流程的技术(多条线程由CPU负责调度执行)。 创建线程: 多线程的创建方式之一:继承Thread类 1.定义一个子类MyThread继承线程类…

 线程:是一个程序内部的一条执行流程。

多线程:是指从软硬件上实现的多条执行流程的技术(多条线程由CPU负责调度执行)。

创建线程:

多线程的创建方式之一:继承Thread类

1.定义一个子类MyThread继承线程类java.lang.Threaf,重写run()方法

2.创建MyTread类的对象

3.调用线程对象的start()方法启动线程(启动后还是执行run()方法的)

优点:编码简单

缺点:线程类已经继承了Thread,无法继承其他类,不利于功能的扩展。

如下就是一个多线程。

创建线程的注意事项:

1.启动线程必须是调用start方法,不是调用run方法。

直接调run方法会当成普通方法执行,此时相当于还是单线程执行

只有调用start方法才是启动一个新的线程执行。

2.不要把主线程任务放在启动子线程之前。

public class Test {//main方法本身 是线程,main方法就是一个线程,main方法启动了线程,main方法就是主线程public static void main(String[] args) {//创建线程的创建方式一:继承Thread类,重写run方法,调用start方法启动线程// 创建线程对象MyThread myThread = new MyThread();// 启动线程myThread.start();for (int i = 0; i < 10; i++) {System.out.println("主线程:" + i);}}
}
// 定义一个类继承Thread类,成为线程类class MyThread extends Thread{// 重写Thread类的run方法@Overridepublic void run() {for (int i = 0; i < 10; i++) {System.out.println("线程1:" + i);}}
}

多线程的创建方法二:实现Runnable接口

public class ThreadDemo2 {public static void main(String[] args) {//sRunnable runnable=new MyRunnable();Thread t = new Thread(runnable);t.start();for (int i = 0; i < 10; i++) {System.out.println("主线程任务正在执行"+i);}}
}
//定义一个线程任务实现Runnable接口
class MyRunnable implements Runnable{@Overridepublic void run() {for (int i = 0; i < 10; i++) {System.out.println("子线程任务正在执行"+i);}}
}

匿名内部类写法

public static void main(String[] args) {//sRunnable runnable=new Runnable(){public void run() {for (int i = 0; i < 10; i++) {System.out.println("子线程任务正在执行"+i);}}};Thread t = new Thread(runnable);t.start();for (int i = 0; i < 10; i++) {System.out.println("主线程任务正在执行"+i);}}

线程的创建方式三:实现Callable接口、FuntureTask类类实现

前两种创建方式存在问题:重写的run方法不能直接返回数据 结果。

JDK5.0提供了Callable接口和FutureTask类来实现(多线程第三种创建方式)

优点:可以返回线程执行完毕后的结果。

 

  

 public static void main(String[] args) {Callable<Integer> myCallable = new MyCallable(15);FutureTask<Integer> task = new FutureTask<>(myCallable);Thread t = new Thread(task);t.start();Callable<Integer> myCallable1= new MyCallable(20);FutureTask<Integer> task1 = new FutureTask<>(myCallable1);Thread t1 = new Thread(task1);t1.start();try {int sum = task.get();System.out.println("子线程1计算结果为:"+sum);} catch (Exception e) {e.printStackTrace();}try {int sum = task1.get();System.out.println("子线程2计算结果为:"+sum);} catch (Exception e) {e.printStackTrace();}for (int i = 0; i < 10; i++) {System.out.println("主线程任务正在执行"+i);}}
}
class MyCallable implements Callable<Integer> {int j;public MyCallable(int j) {this.j = j;}@Overridepublic Integer call() throws Exception {for (int i = 0; i < 10; i++) {j+=i;}return j;}

三种线程的创建方式不同点

线程的常见方法

Thread的常用方法

   

public class Threadmain {public static void main(String[] args) {//创建两个线程Thread t1=new MyThread1();Thread t2=new MyThread1();t1.start();t2.start();System.out.println(t1.getName());System.out.println(t2.getName());t1.setName("线程1");t2.setName("线程2");System.out.println(t1.getName());System.out.println(t2.getName());try{Thread.sleep(1000);}catch (InterruptedException e){e.printStackTrace();}try{t1.join();}catch(InterruptedException e){e.printStackTrace();}}
}
class MyThread1 extends Thread{public void run(){for (int i = 0; i < 10; i++) {System.out.println(Thread.currentThread().getName()+"正在运行"+i);}}
}

 

http://www.dtcms.com/wzjs/238210.html

相关文章:

  • 茂名网站建设短视频矩阵seo系统源码
  • 哈尔滨网站提升排名拓客公司联系方式
  • 广告图片在线制作湖南seo优化首选
  • 匠王红木在那个网站做众筹seo推广优化服务
  • 个人网站yandex搜索入口
  • 简单网站建设流程图seo排名技术教程
  • wordpress 推送到群百度手机seo
  • 微信开发网站线上线下整合营销方案
  • 商城网站建设abc 百度一下
  • b2c购物网站注册城乡规划师报考条件
  • wordpress网站更换域名专业全网优化
  • wordpress docs关键词优化推广公司
  • 武汉建设银行社会招聘网站衡阳seo外包
  • 南京做网站优化的企业搜狗首页排名优化
  • 怎么自己做网站教程重庆网站搭建
  • 广东党员两学一做考试网站网站外包
  • 帝国cms做视频网站百度云网盘搜索引擎入口
  • 江苏国龙翔建设网站.刚刚中国出啥大事了
  • 用域名访问网站网络营销是什么?
  • 站长之家产品介绍宁波优化网站厂家
  • 最好的汽车科技网站建设中牟网络推广外包
  • 网站域名怎么备案cps推广平台有哪些
  • 诚信建设网站的作用标题优化
  • 龙岗网站设计常宁seo外包
  • 企业网站建设包含哪些内容百度关键词检测工具
  • 网站建设php培训2023年的新闻十条
  • 杭州知名的网站建设策划谷歌收录查询
  • 360免费wifi手机版seo查询工具有哪些
  • wordpress 朋友圈上海百度推广排名优化
  • 做网站的业务逻辑seo公司上海