多线程学习笔记

一、多线程的几种实现方式

1.1 继承Thread

public class StartThread extends Thread(){
    @Override
    public void run(){
        //重写run方法
    }

    public static void main(String[] args){
        Thread thread = new Thread();
        //开启一个线程
        thread.start();
    }
}

1.2 实现Runnable

public class StartThread implements Runnable{
    @Override
    public void run(){
        //重写run方法
    }

    public static void main(String[] args){
        StartThread st = new StartThread();   
        Thread thread = new Thread(st);
        //开启一个线程
        thread.start();
    }
}

1.3实现Callable

public class StartThread implements Callable{
    @Override
    //可以有返回值
    //可以抛出异常
    public void call() throw Exception{
        //重写call方法
    }

    public static void main(String[] args){
        StartThread st = new StartThread();   
        //创建执行服务(线程池)
        ExecutorService service = Executors.newFixedThreadPool(3);
        //提交执行
        Future result = service.submit(st);
        //获取结果
        result.get();
       //关闭服务
       service.shutdownNow();
        
    }
}

二、线程状态

三、线程的几种操作

3.1 终止

由于原有的stop方法有线程安全问题,后续推荐的解决方案是,在目标线程加入控制代码,能够自主的控制线程的执行。

3.2 暂停 sleep

通过 Thread.sleep()方法阻塞线程,sleep时间到达后进入就绪状态

3.3 礼让 yield

Thread.yield()方法直接让线程进入就绪状态

3.4 插队 jion

直接简单粗暴的执行当前插队的线程,直至当前插队线程执行完为止,才会将资源让出。

原文地址:https://www.cnblogs.com/ushowtime/p/11716795.html