目录
一:线程组
1:概念
2:用法
3:例子
二:线程池
1:概念
2:特点
4:例子
一:线程组 1:概念
Java中使用ThreadGroup来表示线程组,它可以对一批线程进行分类管理
Java中使用ThreadGroup来表示线程组, 它可以对一批线程进行分类管理, Java允许程序直接对线程组进行控制的
2:用法(1)构造方法和主要需要的方法
ThreadGroup(String name)
构造一个新的线程组。
ThreadGroup(ThreadGroup parent, String name)
创建一个新的线程
getName()
返回此线程组的名称。
(2)Java允许程序直接对线程组进行控制。(例如设置守护线程可以放一个组里直接全部设置)
默认情况下,所有的线程都属于主线程组。
public final ThreadGroup getThreadGroup()
(3)我们也可以给线程设置分组
Thread(ThreadGroup group, Runnable target, String name)
3:例子package day33; public class RunnableTest implements Runnable {//自定义一个类实现Runnable接口,重写run方法 @Override public void run() { for(int i=0;i<10;i++){ System.out.println(Thread.currentThread().getName()+"**"+i); } } }
package day33; import day32.RunnableThread; public class TreadGroup { public static void main(String[] args) { RunnableThread runnableThread = new RunnableThread();//创建自定义类对象 //创建两个线程 Thread t1 = new Thread(runnableThread, "线程1"); Thread t2 = new Thread(runnableThread, "线程2"); //获取默认线程组名 ThreadGroup threadGroup = t1.getThreadGroup(); System.out.println(threadGroup.getName()); //创建两个线程在同一个组中加入同一个线程组中 ThreadGroup g = new ThreadGroup("第一组"); Thread s = new Thread(g,runnableThread, "s"); Thread s1 = new Thread(g,runnableThread, "s1"); //获取线程组名字 System.out.println(s.getThreadGroup().getName()); } }二:线程池 1:概念
程序启动一个新线程成本是比较高的,因为它涉及到要与 *** 作系统进行交互。而使用线程池可以很好的提高性能,尤其是当程序中要创建大量生存期很短的线程时,更应该考虑使用线程池。
2:特点线程池里的每一个线程代码结束后,并不会死亡,而是再次回到线程池中成为空闲状态,等待下一个对象来使用。 在JDK5之前,我们必须手动实现自己的线程池,从JDK5开始,Java内置支持线程池
3:创建线程池以及线程池主要方法1、创建线程池对象,Executors工厂类下的静态方法,newFixedThreadPool是其中一种线程池 public static ExecutorService newFixedThreadPool(int nThreads)
2:方法
Future submit(Runnable task)
提交一个可运行的任务执行,并返回一个表示该任务的未来
pool.shutdown();结束线程池
线程池被关闭,不能重复提交运行。
4:例子package day33; public class RunnableTest implements Runnable {//自定义一个类实现Runnable接口,重写run方法 @Override public void run() { for(int i=0;i<10;i++){ System.out.println(Thread.currentThread().getName()+"**"+i); } } }
package day33; import java.util.concurrent.ExecutorService; import java.util.concurrent.Executors; public class ThreadPool { public static void main(String[] args) { RunnableTest runnableTest = new RunnableTest();//创建自定义对象 ExecutorService executorService = Executors.newFixedThreadPool(2);//定义一个线程池指定大小 executorService.submit(runnableTest);//提交一个任务 executorService.shutdown();//结束 } }
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)