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(); //主线程返回下一个偶数
}
}
}
有何问题?没有输出???
分享到:
相关推荐
在Windows Presentation Foundation(WPF)开发中,UI(用户界面)通常由主线程管理,而后台线程用于执行耗时的任务。然而,由于GUI组件不是线程安全的,直接在后台线程修改UI元素可能会导致应用程序崩溃或出现不可...
在编程领域,尤其是在Windows操作系统和.NET框架中,线程分为前台线程和后台线程,它们在应用程序的执行过程中扮演着不同的角色。本实验聚焦于理解这两种线程的区别,特别是对于C#开发者而言,理解这一概念至关重要...
在VB.NET编程中,后台线程(也称为工作线程)是用于执行非UI相关任务的重要概念,尤其在处理耗时操作时,如大数据计算、网络通信或长时间的数据库操作,以避免阻塞主线程(负责用户界面更新的线程)。本教程将深入...
本篇文章将详细探讨如何实现"Android安卓后台线程摄像"以及如何在前台摄像。 首先,我们来了解Android的线程模型。在Android系统中,主线程(UI线程)负责处理用户交互,而后台线程则用于执行耗时任务,避免阻塞UI...
在计算机编程领域,尤其是涉及到多线程操作时,线程被分为两类:前台线程和后台线程。本文将深入探讨这两种线程的区别,以及如何通过`IsBackground`属性来设置线程的类型。 首先,前台线程是应用程序的主要执行线程...
C#Thread后台线程使用
在Windows Forms(WinForm)应用程序中,经常遇到需要在后台线程执行耗时操作,如数据处理、网络请求等,而这些操作的结果需要更新到用户界面(UI)上,例如显示进度条。由于.NET Framework的安全机制,直接在非UI...
本压缩包文件"安卓拍照上传录像监控录屏相关-包含后台线程自动摄像定时器到时间自动保存3gp文件。正常摄像.rar"似乎提供了一个实现这些功能的示例,主要关注后台自动摄像和定时保存3gp视频文件的技术实现。 首先,...
在`Thread_test`这个示例中,可能包含了如何创建和管理后台线程的代码,演示了如何将线程设置为后台线程,并展示了在多线程环境下,后台线程如何与前台线程交互。 多线程的使用可以提高程序的响应速度和并发能力,...
`AsyncTask`是Android提供的一种轻量级的异步处理机制,它可以帮助开发者在后台线程执行任务,然后在主线程更新UI,避免了因长时间阻塞主线程而造成的ANR(Application Not Responding)错误。下面我们将详细探讨`...
在计算机编程领域,后台线程(也称为工作线程或者服务线程)是与主线程并行执行的任务,它们在不阻塞用户界面的情况下处理耗时操作,如数据加载、计算或更新。在标题"后台线程例子backgroudwoker"中,我们可以推断这...
本文将深入探讨这两个概念,并通过具体的案例分析它们的同步、前台与后台线程的区别,以及如何创建有参线程和无参线程。 首先,我们需要了解进程的基本概念。进程可以被看作是程序在内存中的一次执行实例,每个进程...
在.NET框架中,UI线程(用户界面线程)与后台线程的交互是一个常见的编程挑战,特别是当涉及到耗时的操作时,如网络请求、数据库操作或大型数据处理。为了解决这个问题,委托和事件机制提供了高效且安全的解决方案。...
【Android UI线程与后台线程交互】 在Android应用开发中,UI线程(也称为主线程)负责处理用户界面的交互,而后台线程则用于执行耗时操作,如网络请求、数据库操作等,以避免阻塞UI,保证用户界面的流畅性。当后台...
在.NET框架中,尤其是WPF(Windows Presentation Foundation)应用程序开发中,有时我们需要处理与图形界面交互的任务,这可能包括在后台线程中控制窗口的状态,比如最小化窗口。本资源"dotnet 后台线程设置 X11 ...
标题 "dotnet 后台线程发送 X11 窗口消息" 指涉的是一个使用 .NET 框架(通常指的是 .NET Core 或 .NET Framework)的开发案例,该案例涉及如何在后台线程中向 X11 窗口系统发送消息。X11 是一种广泛用于类 Unix ...
通过后台控件,开发者可以轻松地在后台线程中执行任务,同时保持UI的响应性,解决了多线程稳定性的问题。这种技术在Windows Forms和WPF应用中尤其常见,因为它确保了良好的用户体验,避免了由于长时间等待导致的用户...
本文档——“dotnet 读 WPF 源代码笔记 了解 WPF 已知问题 后台线程创建 WriteableBitmap 锁住主线程”——将深入探讨WPF的源代码分析,以及开发者在实际开发过程中可能遇到的问题,特别是关于后台线程创建...
Java后台线程操作示例【守护线程】 Java后台线程操作示例【守护线程】是Java多线程编程中的一种重要概念,主要介绍了Java后台线程操作的原理、操作技巧与使用注意事项。下面我们将详细介绍Java后台线程操作示例...
前台线程和后台线程的区别和联系: 1、后台线程不会阻止进程的终止。属于某个进程的所有前台线程都终止后,该进程就会被终止。所有剩余的后台线程都会停止且不会完成。 2、可以在任何时候将前台线程修改为后台线程,...