Java多线程--开端

来源:互联网 发布:python字符串索引 编辑:程序博客网 时间:2024/06/06 02:13

多线程

  • 多线程的创建
    new Thread可以创建一个线程
    提供了Runnable接口,则该线程具有执行逻辑
    调用start开启线程
    通过实现Runnable接口或者继承Thread类来创建线程
public class Thread_1 {    public static void main(String[] args) {        Thread thread = new Thread(new Runnable() {            @Override            public void run() {                System.out.println(Thread.currentThread().getName()+"1111111");                print();            }            public void print() {                System.out.println("哈哈哈");            }        });        thread.start();        new MyThread1().start();        System.out.println(Thread.currentThread().getName()+"over");    }}class MyThread1 extends Thread{    @Override    public void run() {        super.run();        for (int i = 0; i < 10; i++) {            System.out.println(Thread.currentThread().getName()+" "+i);        }    }}

线程池

响原模式
通过Executors来创建线程池
通过ExecutorService来接收
单一线程池 执行线程为1 线程任务不固定 先放入先执行
固态线程池 执行线程自己设定 线程任务不固定 先放入先执行
缓存线程池 执行线程自动分配 线程任务不固定 先放入先执行

public static void main(String[] args) {    ExecutorService pool = Executors.newCachedThreadPool();    pool.execute(new Runnable() {        @Override        public void run() {            for (int i = 0; i < 10; i++) {                System.out.println(Thread.currentThread().getName()+" "+i);            }               }    });    pool.execute(new Runnable() {           @Override        public void run() {            for (int i = 0; i < 10; i++) {                System.out.println(Thread.currentThread().getName()+" "+i);            }        }    });    pool.shutdown();    System.out.println("over");}

线程通信

  • submit

后台线程

  • 后台线程在所有的前台线程结束之后,后台线程自动消亡
    在线程启动之前设置
setDaemon(true) 设置为后台线程

线程休眠

  • TimeUnit来控制sleep