二、java实现多线程的方式?

一、同步?异步?

下面两幅图解释了同步异步。

二、实现多线程的方式

1.继承Thread

package threaddemo;

class CreateThreadDemo extends  Thread{

    /**
     * 线程执行的任务,执行的代码
     */
    @Override
    public void run() {
        for (int i = 0; i <30 ; i++) {
            System.out.println("我是线程:"+i+ "名字:"+Thread.currentThread().getName());
        }

    }
}
/**
 * @version V1.0
 * @description:实现线程的方式
 * @author: BingShu
 * @contact: wx:hsj179540
 * @date: 2019年-08月-11日-23
 */
public class ThreadDemo {
    /**
     * 什么是进程?什么是线程?
     * 多线程的应用场景?
     * 多线程的优点?
     * java实现多线程的方式?
     *  1.集成Thread类重写run方法
     */
    public static void main(String[] args) {
        CreateThreadDemo createThreadDemo=new CreateThreadDemo();
        createThreadDemo.start();
        for (int i = 0; i <30 ; i++) {
            System.out.println("我是线程:"+i+ "名字:"+Thread.currentThread().getName());
        }
    }
}

2.实现runable接口(推荐)

package threaddemo;

class CreateThreadDemo2 implements Runnable {

    /**
     * 执行线程代码
     */
    @Override
    public void run() {
        for (int i = 0; i < 30; i++) {
            System.out.println("我是线程:" + i + "名字:" + Thread.currentThread().getName());
        }

    }
}

/**
 * @version V1.0
 * @description:
 * @author: BingShu
 * @contact: wx:hsj179540
 * @date: 2019年-08月-11日-23
 */
public class ThreadDemo2 {
    public static void main(String[] args) {
        CreateThreadDemo2 createThreadDemo2=new CreateThreadDemo2();
        new Thread(createThreadDemo2).start();
        for (int i = 0; i <30 ; i++) {
            System.out.println("我是线程:"+i+ "名字:"+Thread.currentThread().getName());
        }
    }
}

3.使用内部类实现

package threaddemo;

/**
 * @version V1.0
 * @description:使用内部类实现
 * @author: BingShu
 * @contact: wx:hsj179540
 * @date: 2019年-08月-11日-23
 */
public class ThreadDemo3 {
    public static void main(String[] args) {
        Thread thread=new Thread(new Runnable() {
            @Override
            public void run() {
                for (int i = 0; i <30 ; i++) {
                    System.out.println("我是线程:"+i+ "名字:"+Thread.currentThread().getName());
                }
            }
        });
        thread.start();
        for (int i = 0; i <30 ; i++) {
            System.out.println("我是线程:"+i+ "名字:"+Thread.currentThread().getName());
        }
    }
}

三、内部类的使用(补充)

package threaddemo;

abstract class Panret {
    //内部类
    abstract void add();
}

/**
 * @version V1.0
 * @description:内部类的使用
 * @author: BingShu
 * @contact: wx:hsj179540
 * @date: 2019年-08月-11日-23
 */
public class InternalClass {
    public static void main(String[] args) {
        Panret p = new Panret() {
            @Override
            void add() {
                System.out.println("我是内部类");
            }
        };
        //方法调用
        p.add();
    }
}

四、常用api的使用

package threaddemo;

/**
 * 常用api
 * getId() 获取线程Id
 * getName(); // 获取线程名字
 * stop();  //停止
 * Thread.sleep(long value); 休眠
 */
class CreateThreadApiUse implements Runnable {

    @Override
    public void run() {
        for (int i = 0; i < 30; i++) {
            System.out.println("线程id:" + Thread.currentThread().getId() + " 线程Name:" + Thread.currentThread().getName());
           if(i==5){
               //不安全不建议大家使用
               Thread.currentThread().stop();
           }
        }
    }
}

/**
 * @version V1.0
 * @description:
 * @author: BingShu
 * @contact: wx:hsj179540
 * @date: 2019年-08月-11日-23
 */
public class ThreadApi {
    public static void main(String[] args) {
        CreateThreadApiUse createThreadApiUse = new CreateThreadApiUse();

        //自定义线程名字
        Thread thread = new Thread(createThreadApiUse,"我是线程的名字");
        thread.start();
        try {
            //休眠
            Thread.sleep(1000);
        } catch (InterruptedException e) {
            e.printStackTrace();
            System.out.println("线程异常");
        }
    }
}

总结:

1.同步异步?

2.多线程常用的实现方式?(实现Runable方式推荐,原因:java面向接口编程,实现接口可以多继承,但是直接继承Thread将无法继承        其他的类。)

还有其他方式实现多线程?请自行科普。

3.内部类的使用?

4.Thread常用api

有问题欢迎咨询,或者加入我的群:微信 :hsj179540

原文地址:https://www.cnblogs.com/bingshu/p/11337390.html

时间: 2024-08-25 18:20:45

二、java实现多线程的方式?的相关文章

详解三种java实现多线程的方式

java中实现多线程的方法有两种:继承Thread类和实现runnable接口. 1.继承Thread类,重写父类run()方法 ? 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 public class thread1 extends Thread {    public void run() {        for (int i = 0; i < 10000; i++) {            System.out.println("我是线程"+

Java之多线程创建方式

多线程的由来 我们在之前,学习的程序在没有跳转语句的前提下,都是由上至下依次执行,那现在想要设计一个程序,边打游戏边听歌,怎么设计?要解决上述问题,咱们得使用多进程或者多线程来解决. 多线程的好处: 提高程序运行效率,让CPU的 使用率更高. 多个线程之间互不影响 关于多线程的一些名词解释 并发:指两个或多个事件在同一个时间段内发生. 并行:指两个或多个事件在同一时刻发生(同时发生). 进程:是指一个内存中运行的应用程序,每个进程都有一个独立的内存空间,一个应用程序可以同时运行多个进程:进程也是

Java之多线程方式二(实现Runnable接口)

/** * 创建多线程的方式二:实现Runnable接口 * 1. 创建一个实现了Runnable接口的类 * 2. 实现类去实现Runnable中的抽象方法:run() * 3. 创建实现类的对象 * 4. 将此对象作为参数传递到Thread类的构造器中,创建Thread类的对象 * 5. 通过Thread类的对象调用start() * * * 比较创建线程的两种方式. * 开发中:优先选择:实现Runnable接口的方式 * 原因:1. 实现的方式没有类的单继承性的局限性 * 2. 实现的方

使用Java开发多线程端口扫描工具(二)

一 介绍 这一篇文章是紧接着上一篇文章(http://www.zifangsky.cn/2015/12/使用java开发多线程端口扫描工具/)写的,端口扫描的原理不用多少,我在上一篇文章中已经说过了,至于目的大家都懂得.在这一篇文章里,我主要是对端口扫描工具的继续完善,以及写出一个比较直观的图形界面出来,以方便我们测试使用.界面如下: 这个工具主要是实现了以下几点功能:(1)两种扫描方式,一种是只扫描常见端口,另一种是设置一个起始和结束端口,依次探测.当然,原理很简单,用for循环就可以了:(2

java之多线程二

一.JDK5之后的Lock锁的概述和使用 package a; import java.util.concurrent.locks.Lock; import java.util.concurrent.locks.ReentrantLock; public class SellTicket implements Runnable { //定义票 private int tickets = 100; //定义锁对象 private Lock lock = new ReentrantLock(); @

java多线程实现方式

一.什么是线程? 线程:程序中一个单一的顺序控制流程.进程内一个相对独立的.可调度的执行单元,是系统独立调度和分派CPU的基本单位. 多线程:单个程序中同时运行多个线程完成不同的工作,称为多线程. 特点: 1)轻量级的进程,程序运行流中可执行的最小单元,线程不拥有系统资源,多个线程共享进程拥有的资源. 2)一个线程可以创建另外一个线程,多个线程可以并发执行. 3)多个线程在系统运行中抢占资源,会出现间断性,我们看到的是并行执行,其实在有先后顺序的. 4)一个进程至少包含一个线程,即主线程. 二.

Java中有两种实现多线程的方式以及两种方式之间的区别

网上流传很广的是一个网上售票系统讲解.转发过来.已经不知道原文到底是出自哪里了. Java中有两种实现多线程的方式.一是直接继承Thread类,二是实现Runnable接口.那么这两种实现多线程的方式在应用上有什么区别呢? 为了回答这个问题,我们可以通过编写一段代码来进行分析.我们用代码来模拟铁路售票系统,实现通过四个售票点发售某日某次列车的100张车票,一个售票点用一个线程表示. 我们首先这样编写这个程序: Java代码    class ThreadTest extends Thread{

java 实现多线程的两种方式

一.问题引入 说到这两个方法就不得不说多线程,说到多线程就不得不提实现多线程的两种方式继承Thread类和实现Runable接口,下面先看这两种方式的区别. 二. Java中实现多线程的两种方式 1.  继承Thread类 /** * 使用Thread类模拟4个售票窗口共同卖100张火车票的程序,实际上是各卖100张 */ public class ThreadTest { public static void main(String[] args){ new MyThread().start(

java创建实现多线程的方式

一.Java使用多线程主要有三种方式: 第一种:继承Thread类 步骤:① 定义一个类,继承Thread类,并重写Thead类的run方法,run方法内的内容为该线程要执行的任务.run方法也被称为执行体. ② 创建Thead子类的实例,即创建线程对象. ③ 使用线程的start方法启动线程. 第二种:实现Runnable方法 步骤:① 定义一个类,实现Runnable接口,并重写该接口的run方法,run方法体仍然是执行体. ② 创建一个Thead类的实例,并将实现Runnable接口的类的