线程的分类

简介:

1.主线程
main方法。

2.精灵线程
特点:
(1)设置为精灵线程的方法:setDaemon(true);
(2)其他线程结束了 精灵线程也完了
(3)又叫守护线程或者后台线程

import java.io.File;
import java.io.IOException;
import java.net.URL;
import java.util.Date;


public class Test8 {

    /**
     * @param args
     */
    public static void main(String[] args) {
        // 使用后台线程创建10个临时文件

        Thread  t =new Thread(new Runnable(){
            @Override
            public void run() {
                //取出当前程序的运行目录
            URL url=    Test8.class.getClassLoader().getResource("");
            String dir =url.getFile();
            //URLEncoder.encode(dir);  中文路径    编码
                //创建临时文件
            for (int i = 0; i < 10; i++) {
                 File f=new File(dir,"tmp"+i+".txt");
                                 if(!f.exists()){
          try {
                                               Thread.sleep(1000);
          } catch (InterruptedException e) {

                               e.printStackTrace();
            }               
          try {
                            f.createNewFile();
                        } catch (IOException e) {           
                            e.printStackTrace();
                        }

                    }

                }

            }   
        });
        t.setDaemon(true);//设置精灵线程
        t.start();

        for(int i=0;i<=10000;i++){
            System.out.println(Thread.currentThread.getName()+"\t"+i);
        }


    }

}

3.子线程
new 出来的线程


线程的属性
编号:id ,
名字:name ,
优先级:priority 1-》10 默认为5
ThreadGroup线程组

案例

import java.util.Date;


public class Test7 {

    public static void main(String[] args) {
        //主线程
        Thread t=Thread.currentThread();//取得当前程序所在的线程

        //一个线程的信息
        System.out.println("线程名"+ t.getName());
        System.out.println("线程的编号id"+ t.getId());
        System.out.println("线程的优先级"+ t.getPriority());//5     1-10
        System.out.println("线程组"+ t.getThreadGroup());


        ThreadGroup tg =new ThreadGroup("线程组");
        Mytime3 mt =new Mytime3(tg,new Runnable(){ //Thread里面有个构造方法  设置线程组
            @Override
            public void run() {
                boolean flag=true;
                while(flag){
                    try {
                        Thread.sleep(1000);
                    } catch (InterruptedException e) {

                        e.printStackTrace();
                    }

                    Date d=new Date();
                    System.out.println(d);
                }


            }


        });
        mt.setName("新线程");
        mt.setPriority(10);

        mt.start();

        System.out.println("线程名"+ mt.getName());
        System.out.println("线程的编号id"+ mt.getId());
        System.out.println("线程的优先级"+ mt.getPriority());//5     1-10
        System.out.println("线程组"+ mt.getThreadGroup());

    }
}
class Mytime3 extends Thread{

    public Mytime3(){}

    public Mytime3(ThreadGroup tg,Runnable r){
        super(tg,r);


    }


}
目录
相关文章
|
7月前
锁的分类
锁的分类
44 0
|
10月前
|
缓存 Java
线程池分类
1、newCachedThreadPool(可缓存线程池) 2、newFixedThreadPool(指定工作线程数量的线程池) 3、newSingleThreadExecutor(单线程化的线程池) 4、newScheduleThreadPool(定长的线程池)
62 0
|
11月前
|
Java
线程和进程概念区别—及线程常用方法和状态
进程和线程是操作系统中的两个基本概念。 进程是程序执行的基本单位,每个进程都有自己独立的内存空间和系统资源,它拥有自己的虚拟地址空间、代码段、数据段、堆栈段等。一个程序可以对应多个进程,每个进程之间是独立运行的,互相之间不会影响。
128 0
|
设计模式 安全 Java
多线程的创建、线程的状态和调度and同步、join和yield以及单例设计模式的种类
多线程的创建、线程的状态和调度and同步、join和yield以及单例设计模式的种类
77 0
|
算法
线程的分类
线程的分类
381 0
多线程编程之给线程归归类
可以把线程归属到某一个线程组中,线程组中可以有线程对象,也可以有线程组,组中还可以有线程,这样的组织结构有点类似于树的形式,如图所示.线程组的作用是:可以批量管理线程或线程组对象,有效地对线程或线程组对象进行组织
110 0
|
Java C语言
Java多线程编程:变量共享分析(Thread)
Java多线程编程:变量共享分析(Thread) Java 创建线程的两种方法 此处只简单讲下自己对java多线程变量共享的理解: 按照进程和多线程的原理,同一进程内的多个线程之间的地址空间是共享的(除去ThreadLocal),这样线程间的数据是可以互相任意访问的,而对于不同的的语言,如果要实现变量数据的访问,除了要遵循线程间非ThreadLocal数据可以直接访问的原则,还要受限于语言层面的访问限制,这样对于c语言,需要extern声明变量,这样其他线程才可以访问该变量。
1134 0