首页 > 其他分享 >多线程

多线程

时间:2022-10-28 22:33:34浏览次数:87  
标签:String Thread start 线程 new 多线程 public

学习文档:https://www.cnblogs.com/gh110/p/15153666.html

学习视频:https://www.bilibili.com/video/BV1V4411p7EF/

 

1.线程创建(三种方法)

1.1继承Thread类(重要)

a. 自定义线程类继承Thread

b. 重写run()方法,编写线程执行体

c. 创建线程对象,调用start()方法启动线程

测试

          // 创建线程方式一:继承Thread类,重写run()方法,调用start开启线程
          //总结:注意,线程开启不一定立即执行,由CPU调度执行
public class TestThread1 extends Thread{
    // run()方法线程体
    @Override
    public void run() {
        for (int i = 0; i < 20; i++) {
            System.out.println("我在阅读代码-----" + i);
        }
    }

    // main线程
    public static void main(String[] args) {
        // 创建一个线程对象
        TestThread1 thread = new TestThread1();
        // 调用start()开启线程
        thread.start();

        for (int i = 0; i < 200; i++) {
            System.out.println("多线程学习中……" + i);
        }
    }
}

 

多线程网图下载:

1.下载commons-io.jar包:https://commons.apache.org/proper/commons-io/download_io.cgi

下载好后将压缩包解压,复制.jar文件到项目新建的lib文件下 --->右键lib文件选择“Add as Library”

 

测试

package com.xinyu.demo01;

import org.apache.commons.io.FileUtils;

import java.io.File;
import java.io.IOException;
import java.net.URL;

/**
 * @author subeiLY
 * @create 2021-06-07 08:41
 */
// 练习Thread,实现多线程同步下载图片
public class TestThread02 extends Thread{
    private String url;
    private String name;

    // 有参构造
    public TestThread02(String url,String name) {
        this.url = url; //网络图片地址
        this.name = name;   //保存的文件名
    }

    // 下载图片的执行体
    @Override
    public void run() {
        WebDownloader webDownloader = new WebDownloader();
        webDownloader.downloader(url,name);
        System.out.println("下载的文件:" + name);
    }

    public static void main(String[] args) {
        TestThread02 t1 = new TestThread02("http://browser9.qhimg.com/bdm/768_474_0/t010824ab8b5cdfa138.jpg","str1.png");
        TestThread02 t2 = new TestThread02("http://browser9.qhimg.com/bdm/768_474_0/t012468d019e3ce466b.jpg","str2.png");
        TestThread02 t3 = new TestThread02("http://browser9.qhimg.com/bdm/384_237_0/t01039b44f7c7ca5ca3.jpg","str3.png");

        t1.start();
        t2.start();
        t3.start();

    }
}
// 下载器
class WebDownloader{
    // 下载方法
    public void downloader(String url,String name){
        try {
            FileUtils.copyURLToFile(new URL(url),new File(name));
        }catch (IOException e){
            e.printStackTrace();
            System.out.println("IO异常,downloader下载方法异常");
        }
    }
}

 

1.2 实现Runnable接口

  • 推荐使用Runnable对象,因为Java单继承的局限性
  • 自定义线程类实现Runnable接口;
  • 实现run()方法,编写线程执行体;
  • 创建线程对象,调用start()方法启动对象。
// 练习Thread,实现多线程同步下载图片
public class TestThread03 implements Runnable{

    @Override
    public void run() {
        // run方法线程体
        for (int i = 0; i < 20; i++) {
            System.out.println("我在看代码-----" + i);
        }
    }

    public static void main(String[] args) {
        // 创建runnable接口的实现类对象
        TestThread03 thread03 = new TestThread03();
        // 创建线程对象,通过线程对象来开启我们的线程,代理
        Thread thread = new Thread(thread03);
        // 调用start()开启线程
         thread.start();

        for (int i = 0; i < 200; i++) {
            System.out.println("我在学习多线程……" + i);
        }
    }
}

 

标签:String,Thread,start,线程,new,多线程,public
From: https://www.cnblogs.com/xinyu-yudian/p/16837502.html

相关文章

  • Java多线程(5):CAS
    您好,我是湘王,这是我的51CTO博客,欢迎您来,欢迎您再来~​在JDK1.5之前,Java的多线程都是靠synchronized来保证同步的,这会引起很多性能问题,例如死锁。但随着Java的不断完善,JNI(Java......
  • C# tcp 多线程服务端和客户端
    主要是服务端usingSystem;usingSystem.Collections.Generic;usingSystem.Linq;usingSystem.Net;usingSystem.Net.Sockets;usingSystem.Text;usingSystem.Threading;n......
  • java多线程
    java多线程学习1.线程、进程、多线程进程:正在进行中的程序,一个程序的执行过程,需要资源:内存、cpu。线程:属于进程,指的是一个可以独立运行的代码片段(执行单元、执行路径)......
  • C#泛型约束,多线程
    定义泛型类时,可以对客户端代码能够在实例化类时用于类型参数的几种类型施加限制。如果客户端代码尝试使用约束所不允许的类型来实例化类,则会产生编译时错误。这些限制称......
  • C#-多线程的使用Tread
    首先是概念,什么是线程?线程是操作系统分配CPU时间的基本单元,在一个进程中可以有多个线程同时执行代码。谈一谈什么是进程?简单的说,一个正在运行的应用程序可以视为一个进......
  • Java多线程(5):CAS
     您好,我是湘王,这是我的博客园,欢迎您来,欢迎您再来~  在JDK1.5之前,Java的多线程都是靠synchronized来保证同步的,这会引起很多性能问题,例如死锁。但随着Java的不断完善,J......
  • ESP32 多线程入门实验
    一、线程创建函数函数voidxTaskCreate(pdTASK_CODEpvTaskCode,constportCHAR*constpcNane,unsignedportSHORTusStackDepth,void*pvParameters,unsigne......
  • IDEA在多线程环境下断点调试-验证synchronized监视锁的运行状态
    场景Java中数据同步-synchronized关键字与Mointor的使用:https://blog.csdn.net/BADAO_LIUMANG_QIZHI/article/details/126743812上面简单介绍synchronized的使用,如果在I......
  • Java多线程(4):ThreadLocal
    您好,我是湘王,这是我的51CTO博客,欢迎您来,欢迎您再来~​为了提高CPU的利用率,工程师们创造了多线程。但是线程们说:要有光!(为了减少线程创建(T1启动)和销毁(T3切换)的时间),于是工程师们......
  • java多线程编程详细入门教程
    ##1、概念?线程是jvm调度的最小单元,也叫做轻量级进程,进程是由线程组成,线程拥有私有的程序技术器以及栈,并且能够访问堆中的共享资源。这里提出一个问题,为什么要用多......