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---http://www.tuicool.com/articles/NbieE3M
C#Thread后台线程使用
vb.net 后台线程的实现,新手学习使用
应用程序必须运行完所有前台线程后才能退出; 对于后台线程,应用程序可以不考虑其是否已运行完毕而直接退出,所有后台线程在应用程序退出时都会自动结束。
包含后台线程自动摄像,定时器到时间自动保存3gp文件。正常摄像
WinForm后台线程与UI线程通讯 实现进度条变化
包含后台线程自动摄像,定时器到时间自动保存3gp文件。正常摄像.rar,太多无法一一验证是否可用,程序如果跑不起来需要自调,部分代码功能进行参考学习。
前台线程和后台线程的区别于两者的退出时间不同。 在此处它是一个前台线程,17、19行的CurrentThread()方法,可以获取当前正在运行的线程
android asynTask 异步后台线程 各种操作 经典完整 非常经典 非常完整的代码。
运用 委托和事件解决UI线程和后台线程问题,运用 委托和事件解决UI线程和后台线程问题
进程与线程的案例,有同步、前后台线程、线程相关属性、有参线程和无参线程等众多案例
后台线程运行的例子,可以知道线程何时结束
前台线程和后台线程的区别和联系: 1、后台线程不会阻止进程的终止。属于某个进程的所有前台线程都终止后,该进程就会被终止。所有剩余的后台线程都会停止且不会完成。 2、可以在任何时候将前台线程修改为后台线程,...
多线程及后台线程设置上的区别问题的展示,根据msdn上的解释做的理解
Android中UI线程与后台线程交互的探讨.pdf
主要介绍了c#后台线程访问前台控件并显示信息示例,需要的朋友可以参考下
这时我们需要一种较安全的方式来结束后台线程的运行,这样我们可以随时结束后台线程的运行,并且在线程结束时进行相应的资源清理工作(例如将内存数据写入硬盘)。.net框架提供了一些工具来实现该功能。 目录 ...
近期一个C#项目的动图演示原型,实现: 1、后台线程控制图片切换; 2、特效切图。 因为只是原型,只实现了一个淡出特效。vs2017编译。
CC++多线程文件传输v2.2完整源码(断点续传 网络消息收发 高效率 界面与后台线程交互)
主要介绍了Java后台线程操作,结合实例形式分析了java守护线程相关原理、操作技巧与使用注意事项,需要的朋友可以参考下