博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
线程的分类
阅读量:4180 次
发布时间:2019-05-26

本文共 2822 字,大约阅读时间需要 9 分钟。

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);    }}

转载地址:http://ubhai.baihongyu.com/

你可能感兴趣的文章
clone详解
查看>>
【Java并发编程实战】——AbstractQueuedSynchronizer源码分析(一)
查看>>
【Java并发编程实战】——并发编程基础
查看>>
【Java并发编程实战】——Java内存模型与线程
查看>>
Java复制文件的4种方式
查看>>
mysql的JDBC连接工具类
查看>>
利用多线程(用到原子类AtomicInteger)往数据库批量插入大量数据
查看>>
多个线程操作数组
查看>>
定长线程池的应用
查看>>
ArrayBlockingQueue的简单使用
查看>>
Git 常用命令总结(一)
查看>>
Git 常用命令总结(二)
查看>>
JAVA 并发——synchronized的分析
查看>>
Echarts——使用 dataset 管理数据
查看>>
DES 加解密工具类
查看>>
SpringBoot多模块项目实践(Multi-Module)
查看>>
第一篇: 服务的注册与发现Eureka(Greenwich版)
查看>>
第二篇: 服务消费者(rest+ribbon)(Greenwich版本)
查看>>
第三篇: 服务消费者(Feign)(Greenwich版本)
查看>>
获取客户的真实IP地址
查看>>