对线程的创建

一,概括  

二,线程构建方式一(继承Thread类)

三,案例

父类:

package Duoxiancheng;

public abstract class Name {
    public static void main(String[] args) {
        //3,创建一个Thread线程类对象
        Thread t1 =new ZHiLeiA();
        //4,启动线程
        t1.start();
        for (int i = 0; i < 4; i++) {
            System.out.println("软件");
        }

    }


}

 子类:

package Duoxiancheng;
/*
1.让子类继承Thread线程类
* */

public class ZHiLeiA extends Thread {
    //2,必须重写父类的run方法;
    @Override
     public void run(){
        for (int i = 0; i <4 ; i++) {
            System.out.println("星火666");
        }

    }
}

注意事项:

 四,线程构建方式二(实现Runnable接口)

五,案例

 父类:

package Duoxiancheng;

public class Name2 {
    public static void main(String[] args) {
        //3,创建任务对象
        Runnable r =new ZhiLieB();
        //4,把任务对象处理
        new Thread(r).start();
        for (int i = 0; i < 5; i++) {
            System.out.println("主线程运行"+i);
        }

    }
}

子类:

package Duoxiancheng;
//1,实现Runnable接口
public class ZhiLieB implements Runnable {
    //2,重写run方法
    @Override
    public void run() {
        //执行任务
        for (int i = 0; i < 5; i++) {
            System.out.println("次线程运行"+i);
        }


    }
}

注意事项:

六,线程创建方式二的匿名内部类(简化写法) 

七,案例:
 

package Duoxiancheng;

public class Name2_2 {
    public static void main(String[] args) {

    //1,直接创建Runnable接口的匿名内部类
//    Runnable r =new ZhiLieB(){
//     @Override
//     public void run() {
//        //执行任务
//         for (int i = 0; i < 5; i++) {
//             System.out.println("次线程运行"+i);
//         }
//     }
//    };
//    new Thread(r).start();
//        for (int i = 0; i <5 ; i++) {
//            System.out.println("主线程运行"+i);
//        }
//    }
    //2,简化一
//    new Thread(new Runnable() {
//        @Override
//        public void run() {
//            for (int i = 0; i < 5; i++) {
//                System.out.println("次线程运行"+i);
//            }
//        }
//    }).start();
//        for (int i = 0; i <5 ; i++) {
//        System.out.println("主线程运行"+i);
//    }
        //3,简化二
        new Thread(()->{
              for (int i = 0; i < 5; i++) {
                  System.out.println("次线程运行"+i);
              }
         }).start();
          for (int i = 0; i <5 ; i++) {
              System.out.println("主线程运行"+i);
          }
    }
}

八,线程构建方式三(实现Gallable接口)

九,案例

 父类:

package Duoxiancheng;

import java.util.concurrent.Callable;
import java.util.concurrent.ExecutionException;
import java.util.concurrent.FutureTask;

public class Name3 {
    public static void main(String[] args) throws ExecutionException, InterruptedException {
        //3,创建一个callable的对象
        Callable<String> call =new ZhiLieC(100);
        //4,封装对象
        FutureTask <String>f1=new FutureTask<>(call);
        //5,交给线程对象
        new Thread(f1).start();
        //6,获取线程执行后的结果
        String rs =f1.get();
        System.out.println(rs);

    }
}

子类:

package Duoxiancheng;

import java.util.concurrent.Callable;
//1,实现接口
public class ZhiLieC implements Callable<String> {
    private int n;
    public ZhiLieC(int n){
        this.n=n;
    }
    //2,重写call方法
    @Override
    public String call() throws Exception {
        //描述线程任务,返回结果
        //例:求1-n的和返回
        int sum =0;
        for (int i = 1; i <=n ; i++) {
            sum += i;

        }
        return "线程所求之和为"+sum;
    }
}

注意事项:

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/177379.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

【小黑送书—第九期】>>重磅!这本30w人都在看的Python数据分析畅销书:更新了!

想学习python进行数据分析&#xff0c;这本《利用python进行数据分析》是绕不开的一本书。目前该书根据Python3.10已经更新到第三版。 Python 语言极具吸引力。自从 1991 年诞生以来&#xff0c;Python 如今已经成为最受欢迎的解释型编程语言。 pandas 诞生于2008年。它是由韦…

__int128类型movaps指令crash

结论 在使用__int128时&#xff0c;如果__int128类型的内存起始地址不是按16字节对齐的话&#xff0c;有些汇编指令会抛出SIGSEGV使程序crash。 malloc在64位系统中申请的内存地址&#xff0c;是按16字节对齐的&#xff0c;但一般使用时经常会申请一块内存自己切割使用&#…

Selenium浏览器自动化测试框架

介绍 Selenium [1] 是一个用于Web应用程序测试的工具。Selenium测试直接运行在浏览器中&#xff0c;就像真正的用户在操作一样。支持的浏览器包括IE&#xff08;7, 8, 9, 10, 11&#xff09;&#xff0c;Mozilla Firefox&#xff0c;Safari&#xff0c;Google Chrome&#xff…

vs调试输出,不显示线程已退出

如题&#xff1a;一堆线程退出的信息&#xff0c;招人烦。 其实在vs设置里可以关闭&#xff1a; 工具-->选项-->调试-->输出窗口&#xff1a;

动态跳过测试用例

动态跳过测试用例 说明 我们可以通过指定环境变量来动态判断是否执行指定的测试用例设置环境变量有很多种方法&#xff0c;例如命令行方式&#xff0c;格式&#xff1a;--env keyval1,key2val2 &#xff0c;若需要指定多个环境变量则需要逗号来隔开&#xff0c;而不是空格 t…

innoDB的缓冲池(Buffer Pool)的工作原理

数据存在磁盘了&#xff0c;总不能次次和磁盘交互吧&#xff0c;所以innoDB有一个缓冲池&#xff08;Buffer Pool&#xff09;&#xff0c;有了缓冲池后&#xff0c;读写就优先在缓冲池了。读先在缓冲池读&#xff0c;没有再去磁盘加载进缓冲池&#xff1b;写也是先写缓冲池&am…

调试接口速度,打印毫秒数,找出慢的地方,优化

方法的最开头写上 $start_time microtime(true); 然后代码行里 dump(All 1: time ’ . (microtime(true) - $start_time)); dump(All 1.2: time ’ . (microtime(true) - $start_time)); 类似这样的最终打印

[C++] STL_stack queue接口的模拟实现

文章目录 1、stack1.1 stack的介绍1.2.1 stack的构造1.2.2 进、出栈等接口的模拟实现 2、queue2.1 queue的介绍2.2 queue的使用2.2.1 queue构造2.2.2 入、出队等接口的模拟实现 1、stack 1.1 stack的介绍 stack的文档介绍 1. stack是一种容器适配器&#xff0c;专门用在具有…

Linux程序之可变参数选项那些事!

一、linux应用程序如何接收参数&#xff1f; 1. argc、argv Linux应用程序执行时&#xff0c;我们往往通过命令行带入参数给程序&#xff0c;比如 ls /dev/ -l 其中参数 /dev/ 、-l都是作为参数传递给命令 ls 应用程序又是如何接收这些参数的&#xff1f; 通常应用程序都…

thinkphp文件夹生成zip压缩包

一、准备工作&#xff0c;使用phpinfo()查看有没有zip扩展 <?php echo phpinfo(); ?>Thinkphp使用PHP自带的ZipArchive压缩文件或文件夹 显示enabled 说明已经配置好 如果没有安装扩展的&#xff0c;请参照以下方法&#xff1a; 1、下载对应版本的扩展包&#xff1a…

还不知道指针和引用的区别,一篇文章教会你

1、引用的概念 1.引用不是新定义一个变量&#xff0c;而是给已存在变量取了一个别名 2.编译器不会为引用变量开辟内存空间&#xff0c;它和它引用的变量共用同一块内存空间 比如:孙悟空&#xff0c;可以叫他孙悟空&#xff0c;也可以叫齐天大圣。本质他们就是一个人 2、引用的定…

opencv- CLAHE 有限对比适应性直方图均衡化

CLAHE&#xff08;Contrast Limited Adaptive Histogram Equalization&#xff09;是一种对比度有限的自适应直方图均衡化技术&#xff0c;它能够提高图像的对比度而又避免过度增强噪声。 在OpenCV中&#xff0c;cv2.createCLAHE() 函数用于创建CLAHE对象&#xff0c;然后可以…

Python 安装win32com失败

今天进行服务器迁移&#xff0c; 中间有用的python调用win32com组件让docx转换成pdf。不出意外的话出意外了&#xff0c;pip安装win32com的时候各种安装不上&#xff0c; 今天处理完问题之后&#xff0c;记录一下&#xff0c;与人方便与己方便。 在cmd上面&#xff0c;一开始…

配置静态 Eth-trunk

1、需求 1&#xff09;交换网络中存在2个 VLAN – 10 和 20 2&#xff09;每个VLAN的IP地址为&#xff1a;192.168.xx.0/24&#xff08;xx为 vlan 号&#xff09; 3&#xff09;对交换机之间的链路进行链路捆绑&#xff0c;增加互联带宽 4&#xff09;确保同 VLAN的 PC 之间互…

static和extern

1.extern extern 是⽤来声明外部符号的&#xff0c;如果⼀个全局的符号在A⽂件中定义的&#xff0c;在B⽂件中想使⽤&#xff0c;就可以使⽤ extern 进⾏声明&#xff0c;然后使⽤。 即在一个源文件中想要使用另一个源文件&#xff0c;即可通过这个extern来声明使用。 2.st…

基于STC12C5A60S2系列1T 8051单片机的液晶显示器LCD1602显示用户自定义字符应用

基于基于STC12C5A60S2系列1T 8051单片机的液晶显示器LCD1602显示两行常规字符应用 STC12C5A60S2系列1T 8051单片机管脚图STC12C5A60S2系列1T 8051单片机I/O口各种不同工作模式及配置STC12C5A60S2系列1T 8051单片机I/O口各种不同工作模式介绍液晶显示器LCD1602简单介绍通过液晶显…

规则引擎Drools使用,0基础入门规则引擎Drools(一)基础入门

文章目录 系列文章索引一、规则引擎概述1、引出问题2、什么是规则引擎3、使用规则引擎的优势4、规则引擎应用场景 二、Drools介绍1、Drools概述2、Drools构成3、相关概念说明4、Drools执行过程5、KIE介绍 三、Drools入门案例1、业务场景说明2、开发实现 四、Drools基础语法1、规…

webpack plugin

1、基本写法及使用 这里用到 emit 钩子 及make 钩子&#xff0c;前者是串行后者是并行 /*** 1.webpack加载webpack.config.js中所有配置&#xff0c;此时就会new TestPlugin()&#xff0c;执行插件的constructor2.webpack创建compiler对象3.遍历所有plugins中插件&#xff0…

jQuery的学习(一篇文章齐全)

目录 Day29 jQuery 1、jQuery介绍 2、jQuery的选择器 2.1、直接查找 2.2、导航查找 3、jQuery的绑定事件 案例1&#xff1a;绑定取消事件 案例2&#xff1a;模拟事件触发 4、jQuery的操作标签 tab切换案例jQuery版本&#xff1a; 案例1&#xff1a; 案例2&#xff…

ios打包,证书获取

HBuilderX 打包ios界面&#xff1a; Bundle ID(AppID)&#xff1a; 又称应用ID&#xff0c;是每一个ios应用的唯一标识&#xff0c;就像一个人的身份证号码&#xff1b; 每开发一个新应用&#xff0c;首先都需要先去创建一个Bundle ID Bundle ID 格式&#xff1a; 一般为&…