`

后台线程

阅读更多
java中与线程相关的一些函数:
yield,是Thread的静态方法,让出cpu给其他线程执行。
sleep,是Thread的静态方法,让线程休眠一段时间,但时间过后,不一定立即进入运行状态。
join,是Thread类的成员方法,当调用t.join()时,保证t先执行完,再执行当前线程。
package test;

class MyThread  extends Thread{
	public MyThread(){
		this.setDaemon(true);//在启动线程前设置为后台线程,
		this.start();
	}
	
	public void run(){
		while(true){
				try {
					sleep(100);
				} catch (InterruptedException e) {
					e.printStackTrace();
				}
				System.out.println(this);
		
		}
	}
}

public class DaemonTest {

	public static void main(String[] args) {

		for(int i=0;i<10;i++)
		new MyThread();
	}
}

执行结果:没有输出结果,因为在run里面,线程先sleep了100毫秒,一旦所有线程都启动了,当线程要打印信息之前程序已经终止。当main线程结束,整个程序就结束了,而不管后台线程的状态。即只要没有非后台线程在运行,程序就结束。后台线程是提供服务的。
一个后台线程,又叫守护线程,所创建的线程都是后台线程。如,在一个后台线程的run方法中创建新的线程,无需设置this.setDaemon(true);新线程就是后台线程。

线程同步的问题:
package thread;

public class AlwaysEven {

	private int i;
	public void next(){
		i++;i++;
	}
	
	public int getValue(){ //返回偶数
		return i;
	}
	
	
	public static void main(String[] args) {

		final AlwaysEven ae = new AlwaysEven(); //必须是final,因为它被匿名内部类访问
		
		
		new Thread("watcher"){ //匿名内部类
			
			public void run(){
				while(true){
					int val = ae.getValue();
					if(val%2!=0)System.out.println(val);  //watcher线程判断是否是偶数,
					System.exit(0);
				}
				
				
			}
		}.start();//匿名线程
		
		while(true){
			ae.next(); //主线程返回下一个偶数
		}
	}

}
有何问题?没有输出???
分享到:
评论

相关推荐

    WPF后台线程更新UI

    在Windows Presentation Foundation(WPF)开发中,UI(用户界面)通常由主线程管理,而后台线程用于执行耗时的任务。然而,由于GUI组件不是线程安全的,直接在后台线程修改UI元素可能会导致应用程序崩溃或出现不可...

    前台线程后台线程区别实验

    在编程领域,尤其是在Windows操作系统和.NET框架中,线程分为前台线程和后台线程,它们在应用程序的执行过程中扮演着不同的角色。本实验聚焦于理解这两种线程的区别,特别是对于C#开发者而言,理解这一概念至关重要...

    vb.net后台线程学习

    在VB.NET编程中,后台线程(也称为工作线程)是用于执行非UI相关任务的重要概念,尤其在处理耗时操作时,如大数据计算、网络通信或长时间的数据库操作,以避免阻塞主线程(负责用户界面更新的线程)。本教程将深入...

    android安卓后台线程摄像前台摄像

    本篇文章将详细探讨如何实现"Android安卓后台线程摄像"以及如何在前台摄像。 首先,我们来了解Android的线程模型。在Android系统中,主线程(UI线程)负责处理用户交互,而后台线程则用于执行耗时任务,避免阻塞UI...

    后台线程Thread

    在计算机编程领域,尤其是涉及到多线程操作时,线程被分为两类:前台线程和后台线程。本文将深入探讨这两种线程的区别,以及如何通过`IsBackground`属性来设置线程的类型。 首先,前台线程是应用程序的主要执行线程...

    c#Thread后台线程使用

    C#Thread后台线程使用

    WinForm后台线程与UI线程通讯

    在Windows Forms(WinForm)应用程序中,经常遇到需要在后台线程执行耗时操作,如数据处理、网络请求等,而这些操作的结果需要更新到用户界面(UI)上,例如显示进度条。由于.NET Framework的安全机制,直接在非UI...

    安卓拍照上传录像监控录屏相关-包含后台线程自动摄像定时器到时间自动保存3gp文件。正常摄像.rar

    本压缩包文件"安卓拍照上传录像监控录屏相关-包含后台线程自动摄像定时器到时间自动保存3gp文件。正常摄像.rar"似乎提供了一个实现这些功能的示例,主要关注后台自动摄像和定时保存3gp视频文件的技术实现。 首先,...

    线程后台的作用演示

    在`Thread_test`这个示例中,可能包含了如何创建和管理后台线程的代码,演示了如何将线程设置为后台线程,并展示了在多线程环境下,后台线程如何与前台线程交互。 多线程的使用可以提高程序的响应速度和并发能力,...

    android asynTask 异步后台线程 各种操作

    `AsyncTask`是Android提供的一种轻量级的异步处理机制,它可以帮助开发者在后台线程执行任务,然后在主线程更新UI,避免了因长时间阻塞主线程而造成的ANR(Application Not Responding)错误。下面我们将详细探讨`...

    后台线程例子backgroudwoker

    在计算机编程领域,后台线程(也称为工作线程或者服务线程)是与主线程并行执行的任务,它们在不阻塞用户界面的情况下处理耗时操作,如数据加载、计算或更新。在标题"后台线程例子backgroudwoker"中,我们可以推断这...

    进程与线程的案例,有同步、前后台线程、线程相关属性、有参线程和无参线程等众多案例

    本文将深入探讨这两个概念,并通过具体的案例分析它们的同步、前台与后台线程的区别,以及如何创建有参线程和无参线程。 首先,我们需要了解进程的基本概念。进程可以被看作是程序在内存中的一次执行实例,每个进程...

    运用 委托和事件解决UI线程和后台线程问题

    在.NET框架中,UI线程(用户界面线程)与后台线程的交互是一个常见的编程挑战,特别是当涉及到耗时的操作时,如网络请求、数据库操作或大型数据处理。为了解决这个问题,委托和事件机制提供了高效且安全的解决方案。...

    Android中UI线程与后台线程交互的探讨.pdf

    【Android UI线程与后台线程交互】 在Android应用开发中,UI线程(也称为主线程)负责处理用户界面的交互,而后台线程则用于执行耗时操作,如网络请求、数据库操作等,以避免阻塞UI,保证用户界面的流畅性。当后台...

    dotnet 后台线程设置 X11 窗口最小化.rar

    在.NET框架中,尤其是WPF(Windows Presentation Foundation)应用程序开发中,有时我们需要处理与图形界面交互的任务,这可能包括在后台线程中控制窗口的状态,比如最小化窗口。本资源"dotnet 后台线程设置 X11 ...

    dotnet 后台线程发送 X11 窗口消息.rar

    标题 "dotnet 后台线程发送 X11 窗口消息" 指涉的是一个使用 .NET 框架(通常指的是 .NET Core 或 .NET Framework)的开发案例,该案例涉及如何在后台线程中向 X11 窗口系统发送消息。X11 是一种广泛用于类 Unix ...

    后台控件完成线程功能

    通过后台控件,开发者可以轻松地在后台线程中执行任务,同时保持UI的响应性,解决了多线程稳定性的问题。这种技术在Windows Forms和WPF应用中尤其常见,因为它确保了良好的用户体验,避免了由于长时间等待导致的用户...

    dotnet 读 WPF 源代码笔记 了解 WPF 已知问题 后台线程创建 WriteableBitmap 锁住主线程.rar

    本文档——“dotnet 读 WPF 源代码笔记 了解 WPF 已知问题 后台线程创建 WriteableBitmap 锁住主线程”——将深入探讨WPF的源代码分析,以及开发者在实际开发过程中可能遇到的问题,特别是关于后台线程创建...

    Java后台线程操作示例【守护线程】

    Java后台线程操作示例【守护线程】 Java后台线程操作示例【守护线程】是Java多线程编程中的一种重要概念,主要介绍了Java后台线程操作的原理、操作技巧与使用注意事项。下面我们将详细介绍Java后台线程操作示例...

    C#中前台线程和后台线程的区别与联系

    前台线程和后台线程的区别和联系: 1、后台线程不会阻止进程的终止。属于某个进程的所有前台线程都终止后,该进程就会被终止。所有剩余的后台线程都会停止且不会完成。 2、可以在任何时候将前台线程修改为后台线程,...

Global site tag (gtag.js) - Google Analytics