[Java]多线程/继承Thead类/实现runnable接口

Thread类和Thread的子类才能被称为线程类

》》继承Thread类来实现多线程

public class A {
   public static main (String args[])
     {
     

        //创建线程对象并启动线程
        new myThread().start();//千万不能用run,run只能存在一个线程
    }


}



class myThread extends Thread{

    @Override
    public void run() {
    //线程执行体:执行该线程需要的操作}}

》》实现接口法来实现多线程

  • java不允许多继承,因此实现了Runnable接口的类可以再继承其他类。

public class A {
   public static main (String args[])
{ 
Thread a = new Thread(new myRunnable()); a.start(); 
}}
class myRunnable implements Runnable{ 
@Override public void run() { 
//线程执行体:执行该线程需要的操作
                       }
          }
}


==================关于线程池============

【非原创 转载自开心coding开心playing】

创建线程池主要有三个静态方法供我们使用,由Executors来进行创建相应的线程池:

public static ExecutorSevice newSingleThreadExecutor()
public static ExecutorSevice newFixedThreadPool(int nThreads)
public static ExecutorSevice newCachedThreadPool()
public static ScheduledExecutorService newScheduledThreadPool(int corePoolSize)
newSingleThreadExecutor返回以个包含单线程的Executor,将多个任务交给此Exector时,这个线程处理完一个任务后接着处理下一个任务,若该线程出现异常,将会有一个新的线程来替代。
newFixedThreadPool返回一个包含指定数目线程的线程池,如果任务数量多于线程数量,那么没有执行的任务必须等待,直到有任务完成为止。
newCachedThreadPool根据用户的任务数创建相应的线程来处理,该线程池不会对线程数目加以限制,完全依赖于JVM能创建线程的数量,可能引起内存不足。
newScheduledThreadPool创建一个至少有n个线程空间大小的线程池。此线程池支持定时以及周期性执行任务的需求。


我们只需要把实现了Runnable的类的对象实例放入线程池,那么线程池就自动维护线程的启动、运行、销毁。我们不需要自行调用start()方法来开启这个线程。线程放入线程池之后会处于等待状态直到有足够空间时会唤醒这个线程。

你可能感兴趣的:(Java)