java--多线程之后台线程

public class ThreadDaemon {
    /**
     * @param args
     * 后台线程在主进程结束后,也会退出
     */
    public static void main(String[] args) {
        // TODO Auto-generated method stub
        ThreadImplementsTest tlt=new ThreadImplementsTest();
        Thread t1=new Thread(tlt);
        t1.setName("Daemon Thread test");
        如果一个进程中只用后台线程在运行,那么整个进程就会结束。
        t1.start();
    }
}
Output:

exit

Daemon Thread test====>进入loop()

0

 

 

public class ThreadImplementsTest implements Runnable{

    public void loop(){
        String name=Thread.currentThread().getName();
        System.out.println(name+"====>进入loop()");
        for (int i = 0; i < 10; i++) {
            try {
                System.out.println(i);
                Thread.sleep(200);
            } catch (InterruptedException e) {
                // TODO Auto-generated catch block
                System.out.println(e.getLocalizedMessage());
                System.out.println(e.getMessage());
                e.printStackTrace();
            }
        }
        System.out.println(name+"=============>离开Loop");
    }

    /**
     * @param args
     */
    public static void main(String[] args) {
        // TODO Auto-generated method stub
        ThreadImplementsTest tst=new ThreadImplementsTest();
        tst.run();

        try {
            Thread.sleep(100);
        } catch (InterruptedException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }
        tst.loop();
    }

    public void run() {
        // TODO Auto-generated method stub
        loop();
    }
}
时间: 2024-09-11 16:26:26

java--多线程之后台线程的相关文章

多线程问题-新手求助关于Java多线程中启动线程问题

问题描述 新手求助关于Java多线程中启动线程问题 public class Example15_1 { /** * @param args */public static void main(String[] args) { // TODO Auto-generated method stub SpeakHello speakHello; SpeakNinhao speakNinhao; speakHello = new SpeakHello(); speakNinhao= new Speak

详解Java多线程编程中线程的启动、中断或终止操作_java

线程启动: 1.start() 和 run()的区别说明start() : 它的作用是启动一个新线程,新线程会执行相应的run()方法.start()不能被重复调用. run() : run()就和普通的成员方法一样,可以被重复调用.单独调用run()的话,会在当前线程中执行run(),而并不会启动新线程! 下面以代码来进行说明. class MyThread extends Thread{ public void run(){ ... } }; MyThread mythread = new

Java多线程编程中线程锁与读写锁的使用示例_java

线程锁LockLock  相当于 当前对象的 Synchronized import java.util.concurrent.locks.Lock; import java.util.concurrent.locks.ReentrantLock; /* * Lock lock = new ReentrantLock(); * lock.lock(); lock.unLock(); * 类似于 synchronized,但不能与synchronized 混用 */ public class Lo

java多线程学习之线程同步

基本上感觉自己学习的东西都是学会了立马就用,很少有机会能专门花时间去学习一些东西,近些时候不忙,准备把公司的面试题全做一遍,难的倒是不多,但是很多人都不会做,问题就是出在实践上. 言归正传.多线程就目前而言,纯是兴趣上的学习,并没有真实的应用场景.以前觉java多线程很乱,很多概念没似懂非懂,但是实战中写几个实例就一目了然了. 昨天练习线程安全时提到了synchronized关键字,其作用原理其实就是把一个或者一部份资源锁住,只允许当前这个进程使用.我理解线程同步就让各个线程之间能够控制资源的分

JAVA多线程机制之线程创建

在Java中创建线程有两种方式,一种是继承Thread,另一种是实现Runnable接口,Thread实际上也实现了Runnable接口. Thread 构造方法 方法名 说明 Thread() 分配新的 Thread 对象 Thread(Runnable target) 分配新的 Thread 对象 Thread(Runnable target, String name) 分配新的 Thread 对象 Thread(String name) 分配新的 Thread 对象 Thread(Thre

JAVA多线程摘要之线程启动

线程的创建和启动 java语言已经内置了多线程支持,所有实现Runnable接口的类都可被启动一 个新线程,新线程会执行该实例的run()方法,当run()方法执行完毕后,线程就 结束了.一旦一个线程执行完毕,这个实例就不能再重新启动,只能重新生成一 个新实例,再启动一个新线程. Thread类是实现了Runnable接口的一个实例,它代表一个线程的实例,并且 ,启动线程的唯一方法就是通过Thread类的start()实例方法: Thread t = new Thread(); t.start(

JAVA多线程机制之线程概念

在操作系统中,一个独立的正在运行的程序称为进程,通常一个程序又被分为称作任务的小块,任务又可以进一步分为称作线程的更小的块.如果一个程序多于一个线程同时执行,就可以称为多线程并行. 一个线程被定义为一个单一的连续控制流,线程也可以成为执行环境或者轻量级程序.当一个程序发起之后,会首先生成一个缺省的线程,这个线程被称作主线程,就是由main方法引导进入的线程,main方法调用的方法结构会在这个主线程中顺序执行.如果在线程中新建并启动的线程称为从线程.从线程也有自己的入口方法,这是由开发者自己定义的

java多线程编程之线程的生命周期_java

复制代码 代码如下: // 开始线程public void start( );public void run( ); // 挂起和唤醒线程public void resume( ); // 不建议使用public void suspend( );// 不建议使用public static void sleep(long millis);public static void sleep(long millis, int nanos); // 终止线程public void stop( );   /

Java多线程之中断线程(Interrupt)的使用详解_java

interrupt方法 interrupt字面上是中断的意思,但在Java里Thread.interrupt()方法实际上通过某种方式通知线程,并不会直接中止该线程.具体做什么事情由写代码的人决定,通常我们会中止该线程.     如果线程在调用Object类的wait().wait(long)或wait(long, int)方法,或者该类的 join() .join(long) .join(long, int) .sleep(long) 或 sleep(long, int) 方法过程中受阻,则其

JAVA多线程访问UI线程问题

问题描述 做一个联网五子棋小程序,客户端开了一个线程接收服务器信息,那么如何在线程中访问UI线程的控件? 解决方案 解决方案二:楼主描述的不是很清楚,所以我只能猜测是否是将UI控件定义成了局部变量,而不是全局变量?而且开启线程使用的是匿名内部类的方式.如果是这样,问题就出在匿名内部类中不能访问局部变量,要访问的话,变量需要加上final修饰符.所以楼主可试试在UI控件的声明上加上final