多线程两种最常用的例子

1.Thread 方法的子类

package cc;

class myThread extends Thread {
    private String title ;
    public myThread(String title){
        this.title = title ;
    }
    public void run(){
        for(int x = 0 ; x < 202; x++){
            String sub = this.title.substring(0,3) ;
            System.out.println(sub);
        }
    }
}
public class Demo {

    public static void main(String[] args) {
        myThread m1 = new myThread("m1m1m1m1") ;
        myThread m2 = new myThread("m2m2m2m2") ;
        m1.start() ;
        m2.start() ;

    }

}

为什么要用start() ?

在Thread类的start的方法里面有一个异常抛出

Throws:
IllegalThreadStateException - if the thread was already started.

在start()方法里面要调用一个start0() 方法,这个方法使用了(JNI )技术,他调用了本机操作系统的函数。

2使用Runnable 接口实现多线程

如果自己的类已经extends另一个类,就无法直接extends Thread,此时,必须实现一个Runnable接口,如下:

package cc;
class A{

}
class myThread extends A implements Runnable{
    private String title ;
    public myThread(String title){
        this.title = title ;
    }
    public void run(){
        for(int x = 0 ; x < 202; x++){
            String sub = this.title.substring(0,3) ;
            System.out.println(sub);
        }
    }
}
public class Demo {

    public static void main(String[] args) {
        myThread m1 = new myThread("m1m1m1m1") ;
        Thread thread = new Thread (m1) ;
        myThread m2 = new myThread("m2m2m2m2") ;
        Thread thread2 = new Thread(m2) ;
        thread.start();
        thread2.start();

    }

}

先实现一个接口,然后实例化一个Thread类,然后将时间的接口传入这个实例化的Thread类中。

时间: 2024-10-27 07:07:23

多线程两种最常用的例子的相关文章

多线程两种实现方式的区别

请解释Thread类与Runnable接口实现多线程的区别?(请解释多线程两种实现方式的区别?) 1. Thread类时Runnable接口的子类,使用Runnable接口实现多线程可以避免单继承局限!2. Runnable接口实现的多线程可以比Thread类实现的多线程更加清楚的描述数据共享的概念! 请写出多线程两种实现操作?(写出Thread类继承的方式和Runnable接口实现的方式代码!) 实现Thread类: 类似于代理设计模式! class MyThread extends Thre

java多线程 —— 两种实际应用场景模拟

java多线程-两种实际应用场景模拟 转自 薛定谔的猫 (一) 先说说第一个,模拟对信息的发送和接收.场景是这样的: 就像笔者之前做的消息的发送,一个是服务器,一个是客户端.发送的话,要保证信息100%的发送给客户端,那么发给客户端之后,客户端返回一个消息告诉服务器,已经收到.当服务器一直没有收到客户端返回的消息,那么服务器会一直发送这个信息,直到客户端发送回确认信息,这时候再删除重复发送的这个信息. 为了模拟这个场景,这里写两个线程,一个是发送,一个是接收,把发送的信息,要保存到线程安全的对象

【Python】python 多线程两种实现方式

目前python 提供了几种多线程实现方式 thread,threading,multithreading ,其中thread模块比较底层,而threading模块是对thread做了一些包装,可以更加方便的被使用. 2.7版本之前python对线程的支持还不够完善,不能利用多核CPU,但是2.7版本的python中已经考虑改进这点,出现了multithreading  模块.threading模块里面主要是对一些线程的操作对象化,创建Thread的class.一般来说,使用线程有两种模式: A

依赖注入的两种方式并附上例子

1.依赖注入:就是指程序在运行过程中,如果需要另外一个对象协助完成时,无需在代码中创建被调用者,而是依赖外部的注入获取. 2.依赖注入的两种方式: 设置注入:设置注入是通过setter方法注入被调用者的实例. 构造注入:利用构造方法来设置依赖注入的方式称为构造注入. 3.接下来附上例子来说明设置注入 (1).首先,附上设置注入的例子,新建一个Java项目,配置好Spring后,即可,项目结构图如下图所示: (2).首先,新建2个接口,一个Animal接口,一个Person接口,其中Animal接

两种最常用的 HTTP 方法:GET 和 POST的区别

什么是 HTTP? 超文本传输协议(HTTP)的设计目的是保证客户机与服务器之间的通信. HTTP 的工作方式是客户机与服务器之间的请求-应答协议. web 浏览器可能是客户端,而计算机上的网络应用程序也可能作为服务器端. 举例:客户端(浏览器)向服务器提交 HTTP 请求:服务器向客户端返回响应.响应包含关于请求的状态信息以及可能被请求的内容. 两种 HTTP 请求方法:GET 和 POST 在客户机和服务器之间进行请求-响应时,两种最常被用到的方法是:GET 和 POST. GET - 从指

多线程的四种创建方式--前两种不常用

- (void)viewDidLoad { [super viewDidLoad]; //1.Datach 方式,隐式创建 //    [NSThread detachNewThreadSelector:@selector(detachMethod) toTarget:self withObject:nil]; //2.NSObject的perform方法,隐式创建 //    [self performSelectorInBackground:@selector(detachMethod) w

javascript中两种基本常用排序算法分析

备注:内容大部分从网上复制,代码为自己手写.仅做知识的温故知新,并非原创. 1.冒泡排序(Bubble Sort) (1)算法描述 冒泡排序是一种简单的排序算法.它重复地走访过要排序的数列,一次比较两个元素,如果它们的顺序错误就把它们交换过来.走访数列的工作是重复地进行直到没有再需要交换,也就是说该数列已经排序完成.这个算法的名字由来是因为越小的元素会经由交换慢慢“浮”到数列的顶端. (2)算法描述和实现 具体算法描述如下: <1>.比较相邻的元素.如果第一个比第二个大,就交换它们两个: &l

在基于MVC的Web项目中使用Web API和直接连接两种方式混合式接入

在我之前介绍的混合式开发框架中,其界面是基于Winform的实现方式,后台使用Web API.WCF服务以及直接连接数据库的几种方式混合式接入,在Web项目中我们也可以采用这种方式实现混合式的接入方式,虽然Web API或者WCF方式的调用,相对直接连接数据库方式,响应效率上略差一些,不过扩展性强,也可以调动更多的设备接入,包括移动应用接入,网站接入,Winfrom客户端接入,这样可以使得服务逻辑相对独立,负责提供接口即可.这种方式中最有代表性的就是当前Web API的广泛应用,促进了各个接入端

redis两种调用方式实例

在下面的代码示例中,将给出两种最为常用的Redis命令操作方式,既普通调用方式和基于管线的调用方式.    注:在阅读代码时请留意注释. 1 #include <stdio.h>  2#include <stdlib.h>  3#include <stddef.h>  4#include <stdarg.h>  5#include <string.h>  6#include <assert.h>  7#include <hire