18.2实现线程的两种方式(代码片段)

studycode studycode     2022-12-28     510

关键词:

一、概述
  在Java中主要提供两种方式实现线程,分别为继承java.lang.Thread类与实现java.lang.Runnable接口。

二、继承Thread类
  a、Thread类是java.lang包中的一个类,从这个类中实例化的对象代表线程,程序员启动一个新线程需要建立Thread类实例。
  Thread类中常用的两个构造方法如下:
    public Thread():创建一个新的线程对象。
    public Thread(String threadName):创建一个名称为threadName的线程对象。
  b、完成线程真正功能的代码放在类的run()方法中,当一个类继承Thread类后,就可以在该类中覆盖run()方法,将实现该线程功能的代码写入run()方法中,然后同时调用Thread类中的start()方法执行线程,也就是调用run()方法。
  c、Thread对象需要一个任务来执行,任务是指线程在启动时执行的工作,该工作的功能代码被卸载run()方法总。
  run()方法必须使用以下语法格式:
    public void run()
    
  d、当执行一个线程程序时,就自动产生一个线程,主方法正式在这个线程上运行的。当不在启动其它线程是,该程序就是单线程程序,如在本章已签的程序都是单线程程序。主方法线程启动有java虚拟机负责,程序员负责启动自己的线程。
  代码如下:
    public static void main(String[] args)
      new ThreadTest().start();
    
注意:(1)、如果start()方法调用一个已经启动的线程,系统将抛出IllegalThreadStateException异常。
      (2)、在main方法中,使线程执行需要调用Thread类中的start()方法,strat()方法调用被覆盖的run()方法,如果不调用start()方法,线程永远都不会启动,在主方法没有调用start()方法之前,Thread对象只是一个实例,而不是一个真正的线程。

技术分享图片
 1 package com.lzw;
 2 
 3 public class ThreadTest extends Thread     //指定继承Thread类
 4     private int count = 10;
 5     public void run()         //重写run()方法
 6         while(true) 
 7             System.out.print(count + "  ");
 8             if (--count == 0) 
 9                 return;
10             
11         
12     
13     public static void main(String[] args) 
14         new ThreadTest().start();    
15     
16 
View Code

技术分享图片

三、实现Runnable接口

 



















线程的两种实现方式(代码片段)

线程有两种实现方式一,Thread类  publicclassThreadimplementsRunnable  二,Runnable接口  publicinterfaceRunnable    publicabstractvoidrun();  区别:Thread是一个类,他继承了runnable接口,而runnable是一个接口,一个类只能有一个父类... 查看详情

线程实现的两种方式及区别(代码片段)

我们来用最经典的卖票的案例,表明两种实现方式的区别,同时分析线程不安全产生的原因一、继承Thread类packagetest;/***@Description*@Authorshusheng*@Email[email protected]*@Date2018/8/31*/publicclassSellTicketOneextendsThreadprivatestaticintticke 查看详情

实现多线程编程的两种方式(代码片段)

1.继承Thread类(Thread类实现了Runnable接口:publicclassThreadimplementsRunnable)2.实现Runnable接口实例代码:1.继承Thread类publicclassMyThreadDemopublicstaticvoidmain(String[]args)MyThreadthread=newMyThread();thread.start( 查看详情

实现多线程的两种方式(代码片段)

...码结构:publicclassThreadimplementsRunnable从中可以看出Thread类实现了Runnable,由于java中不支持多继承,所以实现多线程时,可以采用实现Runnable的方式。2.实现Runnable接口。 注意一下声明与调用不仅仅只是new一下,start一下,而是ne... 查看详情

实现多线程的两种方式,卖票场景,亲测可用(代码片段)

...场景:  多线程共同卖票,总票数在多个卖票窗口共享实现方式:  1继承Thread类;  2实现Runnable接口正文开始方式1Thread继承packagecom.example.demo;/***@Description:*@Author:tianminghai*@Date:2:55PM2018/10/24*/publicclassThreadDemoextendsThread 查看详情

匿名内部类实现线程的两种方式(代码片段)

publicstaticvoidmain(String[]args)//匿名内部类实现线程的两种方式/*Threadt1=newThread()@Overridepublicvoidrun()System.out.println("任务1...."+Thread.currentThread());;t1.start();*/newThread()publicvoidrun()System.out.println("任务1...."+Thread.currentThread());;.start();/*Threadt2=n... 查看详情

python-线程池的两种实现方式转载(代码片段)

1#!/usr/bin/envpython2#-*-coding:utf-8-*-34importqueue5importthreading6importcontextlib7importtime89StopEvent=object()101112classThreadPool(object):1314def__init__(self,max_num,max_task_num=None):15if 查看详情

传统线程技术中创建线程的两种方式(代码片段)

...建线程的方式:一是继承Thread类,并重写run()方法;二是实现Runnable接口,覆盖接口中的run()方法,并把Runnable接口的实现扔给Thread。这两种方式大部分人可能都知道,但是为什么这样玩就可以呢?下面我们来详细分析一下这两种... 查看详情

并发技术01传统线程技术中创建线程的两种方式(代码片段)

...建线程的方式:一是继承Thread类,并重写run()方法;二是实现Runnable接口,覆盖接口中的run()方法,并把Runnable接口的实现扔给Thread。这两种方式大部分人可能都知道,但是为什么这样玩就可以呢?下面我们来详细分析一下这两种... 查看详情

java中实现多线程的两种方式(代码片段)

Java中对于对于多线程的实现主要提供了两种方法继承Thread()类实现Runnable接口接下来从这两个方面进行说明相关知识。继承Thread()类写一个类直接继承Thread()类,然后重写Thread()类的run()方法,调用其start()方法即可启动线程... 查看详情

java多线程带你用不一样的思维看创建线程的两种方式(代码片段)

...两种方式start和run方法解析彩蛋:同时用两种方法来实现同一个线程,会遇到什么小知识:调用start方法,线程就会立刻启动吗?创建线程的两种方式通过实现Runnable接口publicclassCreateThread//继承Thread类来staticclassMyThre... 查看详情

go基础系列:go实现工作池的两种方式(代码片段)

workerpool简介workerpool其实就是线程池threadpool。对于go来说,直接使用的是goroutine而非线程,不过这里仍然以线程来解释线程池。在线程池模型中,有2个队列一个池子:任务队列、已完成任务队列和线程池。其中已完成任务队列可... 查看详情

1-多线程的两种实现方式(代码片段)

packageorg.ks.多线程;/**多线程(多线程程序实现的方式1)(掌握)*1.继承Thread*定义类继承Thread*重写run方法*把新线程要做的事写在run方法中*创建线程对象*开启新线程,内部会自动执行run方法*///现象:bb和ksdsb交替执行publicclassDemo2_Thread_real... 查看详情

2.常用的实现多线程的两种方式(代码片段)

...下:publicinterfaceRunnablepublicabstractvoidrun();Runnable的作用,实现多线程。我们可以定义一个类A实现Runnable接口;然后,通过newThread(newA())等方式新建线程。 Thread 是一个类。Thread本身就实现了Runnable接口。它的声明如下:publicc... 查看详情

java多线程带你用不一样的思维看创建线程的两种方式(代码片段)

...两种方式start和run方法解析彩蛋:同时用两种方法来实现同一个线程,会遇到什么小知识:调用start方法,线程就会立刻启动吗?创建线程的两种方式通过实现Runnable接口publicclassCreateThread//继承Thread类来staticclassMyThre... 查看详情

java中多线程的两种创建方式(代码片段)

一丶继承Thread类实现多线程第一步:继承Thread类第二步:重写run()方法第三步:创建继承了Thread类的对象,调用start()方法启动。//线程创建方式一:/*第一步:继承Thread类第二步:重写run()方法第三步:创建继承了Thread类... 查看详情

java多线程编程的两种方式(代码片段)

...简单根据我之前的示例代码来演示一些,多线程编程实现的两种方法:1、定义类继承thread类并且重写其run方法,最好调用其run()方法运行。以下是main函数中的调用运行多线程代码:(继承thread重写run来实 查看详情

开启线程的两种方式(代码片段)

...在使用层面,有很大的相似性,因而不再详细介绍二开启线程的两种方式方式一fromthreadingimportThreadimporttimedefsayhi(name):time.sleep(2)print(‘%ssayhello‘%name)if__name__==‘__main__‘:t=Th 查看详情