栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

java多线程

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

java多线程

java多线程

多线程是cpu操作的最小单元,通过多重线程调度算法如:FIFO()、时间片轮换、最短作业等,通俗来将用多线程就是将一件事分成若干个组成交给若干个线程处理,从而加快了处理速度

一、为什么要使用多线程
   就一点:提高计算机CPU的利用率
二、线程的分类

分为主线程和子线程,main方法称之为主线程,其余的为子线程,子线程可细分为守护线程和非守护线程(其含义与守护进程和非守护进程相差不大)

public static void main(String[] args) {
   new Thread(()->{
       System.out.println("myThread");
       //通过.setDaemon(true)将子线程设置为守护进程
   }).setDaemon(true);
}
三、实现线程的方式

一、继承Thread

@SneakyThrows
public static void main(String[] args) {
    Thread t1 = new myThread();
    t1.setName("myThread");
    t1.start();
}
// 继承Thread 创建线程
class myThread extends Thread{
    @Override
    public void run() {
        System.out.println(Thread.currentThread().getName() +" Is Running ....");
    }
}

二、实现Runnable

@SneakyThrows
public static void main(String[] args) {
    myThread2 t2 = new myThread2();
    t2.setName("myThread2");
    t2.run();
}
//实现Runnable 创建线程
class myThread2 implements Runnable {
   private  String name;
   public void setName(String name){
       this.name = name;
   }
    @Override
    public void run() {
       Thread.currentThread().setName(name);
        System.out.println(Thread.currentThread().getName() + " Is Running ....");
    }
}

三、实现Callable

@SneakyThrows
public static void main(String[] args) {
    //FutureTask 结果对象(下一篇再总结)
    FutureTask futureTask = new FutureTask<>(thread3);
    new Thread(futureTask).start();
    System.out.println(futureTask.get());
}
//实现Runnable 创建线程
class myThread3 implements Callable {
    @Override
    public String call(){
        return Thread.currentThread().getName() + " Is Running ....";
    }
}
四、线程的状态

New(初始):新建状态,当线程创建完成时为新建状态,即new Thread(…),还没有调用start方法时,线程处于新建状态。

RUNNABLE(运行):在 Java 虚拟机中执行的线程处于这种状态。。

BLOCKED(阻塞):被阻塞等待监视器锁的线程处于这种状态

WAITING(等待):无限期等待另一个线程执行特定操作的线程处于此状态。

TIMED_WAITING(超时等待):等待另一个线程执行操作达指定等待时间的线程处于此状态。

TERMINATED(终止):已退出的线程处于此状态。

线程状态之间的切换

五、线程中常用的方法
    
    public static native Thread currentThread();

    
    public static native void yield();

    
    public static native void sleep(long millis) throws InterruptedException;

    
    public static void sleep(long millis, int nanos)
    throws InterruptedException {}

    
    private void init(ThreadGroup g, Runnable target, String name,
                      long stackSize) {
        init(g, target, name, stackSize, null, true);
    }

    
    private void init(ThreadGroup g, Runnable target, String name,
                      long stackSize, AccessControlContext acc,
                      boolean inheritThreadLocals) {}
  
  public synchronized void start() {}
  
  public void run() {}
  
  private void exit() {}
   
   public final void stop() {}
   
   public void interrupt() {}
   
    public boolean isInterrupted() {}
   
    public final native boolean isAlive(){};
    
    public final void setPriority(int newPriority){}
    
    public final int getPriority() {}
    
    public final synchronized void setName(String name) {}
    
    public final String getName() {}
    
    public final ThreadGroup getThreadGroup(){}
    
    public static int activeCount() {}
    
    public final synchronized void join(long millis,int nanos){}
    
     public static void dumpStack(){}
    
     public ClassLoader getContextClassLoader() {}
    
     public StackTraceElement[] getStackTrace() {}
转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/666450.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号