zoukankan      html  css  js  c++  java
  • 多线程学习笔记

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

    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

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

  • 相关阅读:
    线段树再练习
    SCOI 2014 省选总结
    网络流拓展——最小费用最大流
    【集合!】 20140416 && 20140417集训 总结
    Codeforces Round #215 (Div. 1)
    CDQ分治题目小结
    Codeforces Round #232 (Div. 1)
    Codeforces Round #264 (Div. 2)
    Uva 12361 File Retrieval 后缀数组+并查集
    FFT初步学习小结
  • 原文地址:https://www.cnblogs.com/ushowtime/p/11716795.html
Copyright © 2011-2022 走看看