多线程两种最常用的例子

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了多线程两种最常用的例子相关的知识,希望对你有一定的参考价值。

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类中。

 

以上是关于多线程两种最常用的例子的主要内容,如果未能解决你的问题,请参考以下文章

详解!Python 中这 5 种最常用的线程锁,你会用了吗?

多线程(多窗口卖票例子)

多个用户访问同一段代码

Java多线程-两种常用的线程计数器CountDownLatch和循环屏障CyclicBarrier

多个请求是多线程吗

JDK中都使用了哪些常用的设计模式?先来聊一种最常用的!