建立多线程方法一: extends Thread方法
    步骤:
    ①、继承Thread方法
    ②、重写一个run方法
    ③、在main主线程中执行class对象,调用start方法开始线程。(子类对象.start())
    ④、缺点:避免OOP单继承局限性
    方法二:implements Runnable接口
    步骤:
    ①、继承implements接口
    ②、重写一个run方法
    ③、在mian方法中执行class对象,调用Thread对象(Thread(传入对象).start)
    ④、优点:避免单继承局限性,灵活方便,方便同一对象被多线程使用。
    方法三: implements Callable接口(仅作了解即可)
    ①、继承Callable接口 implements Callable
    ②、重写call方法 public Boolean call() throws IOException{}
    ③、//创建执行服务者 ExecutorService ser=Excutor.newFixedThreadpool
    ④、//提交执行 ser.submit(Callable对象)
    ⑤、//获取返回值 (返回值类型)接收参数=Callale对象.get();
    ⑥、//关闭服务 ser.shutdownNow() (奇怪的是为什么会有另外一个方法ser.shutdown?)

    ②、线程终止
    方法 说明
    setPriority(int newPriority) 更改线程的优先级
    static void sleep(long mills) 在指定的毫秒数内让当前正在执行的线程体休眠
    void join() 等待该线程终止
    static void yield() 暂停当前正在执行的线程对象,并执行其他线程
    void interrupt() 中断线程(不建议使用该方式)
    boolean isAlive() 测试线程是否处于活动状态
    (不建议使用 stop()方法和interrupt()方法)a

    ③、Sleep()(解决由于多个对象操作同一个对象所引发的线程不安全问题。Sleep(timemillions 毫秒数)
    ④、Yield()线程礼让,当前进程放弃占用CPU,让CPU重新进行调度,并且礼让不一定能够成功。
    ⑤、Join()线程插队,会让线程阻塞,不建议使用。
    ⑥、State()线程状态观察, State state=thread.getState() state是接收状态类型的变量,thread.getState()是接收当前线程状态的方法。
    ⑦、setPriority()设置线程的优先级 getPriority()得到线程的优先级
    ⑧、线程守护机制:daemon()守护线程, Thread.setDaemon();
    ⑨、线程同步机制:线程锁、线程队列 同步方法:synchronized(隐式锁),作为方法修饰词 同步代码块:synchronized(隐式锁),作为代码块名。
    ⑩、CopyOnWriteArrayList 并发编程. 在java.until.corrent包下

    十一、同步机制名词:死锁、Lock锁、生产者消费者问题、管程法、信号灯法、线程池。
    ①死锁:多个进程各自占有一些资源、但互相等待对方得资源。
    死锁的发生条件为:一、互斥条件:一个资源每次都只能被一个对象使用。二、请求与保持条件:一个请求因为无法得到资源发生阻塞时,保持以获得的资源不放。三、不剥夺条件:进程已获得的资源,在未使用完之前,不强行剥夺。四、若干进程之前形成一种头尾相接的循环等待资源关系。(认为解决死锁,从不剥夺条件上下手。)
    ②Lock锁:常用的是实现了Lock的ReentrantLock类
    ③生产者消费者问题:共享一个资源
    ④管程法:
    ⑤信号灯法:判断

    缺少线程通信的相关知识

    ⑥线程池(相关方法):
    一、创建一个具有缓存功能的线程池,线程将会被缓存在线程中:newCachedThreadPool()
    二、创建一个可重用、具有固定线程数的线程池:newfixedThreadPool(int nThread)
    三、创建具有延迟功能的线程池:newSchedualedThreadPool(int corePoolsize)
    四、创建将大任务分解为多个小任务的线程池:ForkJoinPool()//对于ForkJoinPool(),可以调用.submit()方法提交要执行的target也可以用ForkJoinPool.commonPool()>Futrue<>接收?
    五、线程工具类之ThreadLocal类:解决线程并发对资源的非通信共享冲突,

    //创建服务,创建线程池
    ExecutorService service=Executor.newfixedThreadPool(待填入的线程数);
    //执行
    service.execute(待放入的线程类)
    //关闭线程
    service.shutdown()

    多核执行任务线程例子:
    ①、并行线程池的创建: ForkJoinPool forkjoinpool=new ForkJoinPool();
    ②、向线程池中提交一定的任务: forkjoinpool.submit(待提交的分解成多任务的线程)
    ③、(未知的方法?)forkjoinpool.awaitTermination(timeout:2,TimeUnit.SECONDS);
    ④、关闭线程池:forkjoinpool.shutdown();