java并发访问之线程

作为一个程序开发者,无时无刻都面临着多线程的问题,就像空气与你。

一、初遇线程

Thread可能是我们接触最早的多线程问题了。
线程状态
以上是线程存在的6中不同的状态,当然此图只是一种流程来说明线程的不同状态
1、线程的创建
创建线程可以直接继承Thread类,也可以实现Runnable接口的形式,都是通过调用Thread的start()方法来启动
2、线程的停止
可以通过*interrupt()*方法进行停止线程,线程是否停止我们可以通过一下方法进行判断:
interrupted():查看运行此方法的(当前)线程是否已经中断,执行后具有清除标记的作用

isInterrupted():查看Thread的对象是否已经中断
通过尝试上面的方法,会发现interrupt之后并未终止后面代码的执行。
然后我们就需要通过抛异常、return等方式来阻止这个停不下的线程。

if(this.interrupted()){
	throw new InterruptedException();
}
if(this.interrupted()){
	return ;
}

暴力的终止方法:stop(),这个已经被作废。通过它停止线程可能出现,一些清理性的工作等不到处理,以及对锁定的对象进行了解锁,会造成数据不一致的问题

3、守护线程
java线程中有两种线程,一种是用户线程,另一种就是守护(Deamon /mɒnɪtə®/)线程
守护线程是一种特殊的线程,它的特性有陪伴的含义,当进程中不存在线程了,它们就会自动销毁,典型的守护线程就是垃圾回收线程。
守护线程不能持有任何需要关闭的资源,例如读取文件内容等,因为虚拟机退出时,守护线程没有任何机会来关闭文件,这会导致数据丢失

public static void main(String[] args) {
	Thread t = new MyThread();
	t.setDaemon(true);
	t.start();
	System.out.println("main方法进入睡眠...");
	try {
		Thread.sleep(3000);
	} catch (InterruptedException e) {
	}
	System.out.println("睡眠结束");
}

MyThread线程你可以随便写点打印,观察一下结果

欢迎大家进行留言,想了解的或本帖不足的。同分享,同进步

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值