多线程的实现和常用操作方法

Posted

tags:

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

一、多线程的实现

1.继承 Thread 类

java.lang.Thread是一个线程操作的核心类。新建一个线程最简单的方法就是直接继承Thread类,而后覆写该类中的run()方法(就相当于主类中的main方法)

public class MyThread extends Thread{
    @Override
    public void run() {
        System.out.println("MyThread is run");
    }
}
MyThread myThread = new MyThread();//创建myThread实例
myThread.start();//启动线程

2.实现Runnable接口

public class MyThread implements Runnable{//实现Runnable接口
    @Override
    public void run() {
        System.out.println("MyThread is run");
    }
}
MyThread myThread = new MyThread();
Thread thread = new Thread(myThread);//将自己的myThread传入Thread
thread.start();//启动线程

3.实现Callable接口,重写call函数

public interface Callable<V>   {  //Callable接口
    V call() throws Exception;   
} 
public class SomeCallable<V> extends OtherClass implements Callable<V> {
    @Override   //@Override注解表明重写call()方法
    public V call() throws Exception {
        // TODO Auto-generated method stub
        return null;
    }
}
Callable<V> oneCallable = new SomeCallable<V>();   //由Callable<Integer>创建一个FutureTask<Integer>对象:   
FutureTask<V> oneTask = new FutureTask<V>(oneCallable);   //FutureTask<Integer>是一个包装器,它通过接受Callable<Integer>来创建,它同时实现了Future和Runnable接口。 
Thread oneThread = new Thread(oneTask);   //由FutureTask<Integer>创建一个Thread对象
oneThread.start();   //线程创建完成。

二、多线程常用操作方法

1.线程休眠 sleep()

线程休眠:指让线程暂缓一下,到了预计时间再执行。
线程休眠的时候会让出CPU,让CPU执行其他的任务,但是sleep方法不会释放锁,也就是说当前线程持有对某个对象的锁的时候,其他线程无法访问这个对象。

2.线程让步 yield()

调用这个方法会暂停当前线程对象,并执行其他线程。
yield方法会让当前线程交出CPU权限,让CPU执行其他的线程,同样也不会释放锁。但是yield不能控制让出CPU的时间。yield方法只能让拥有相同优先级的线程有获取CPU执行时间的机会。
调用yield方法并不会让线程进入阻塞状态,而是让线程重回就绪状态,它只需要等待重新获取CPU执行时 间,这一点是和sleep方法不一样的。

3.join()方法

等待该线程终止。意思就是如果在主线程中调用该方法时就会让主线程休眠,让调用该方法的线程run方法先执行完毕之后在开始执行主线程。

4.wait()方法

wait()方法是让当前线程进入等待状态,同时,wait()也会让当前线程释放它所持有的锁,直到其他线程调用此对象的 notify() 方法或 notifyAll() 方法”,当前线程被唤醒(进入“就绪状态”)。

5.线程停止

多线程中有三种方式可以停止线程。
①. 设置标记位,可以是线程正常退出。
②. 使用stop方法强制使线程退出,但是该方法不安全。
④. 使用Thread类中的一个interrupt() 可以中断线程。

以上是关于多线程的实现和常用操作方法的主要内容,如果未能解决你的问题,请参考以下文章

java中多线程安全性和同步的常用方法

多线程更新UI的常用方法

初识多线程之基础知识与常用方法

多线程(一):认识线程,创建线程和线程的常用方法

Java多线程-常用方法

通俗易懂两种常用的多线程实现方式——Java并发系列学习笔记