java线程编程

 System.out.println(Thread.currentThread().getName());
test.start();
test.start();
多次调用start会出现:
Exception in thread "main" java.lang.IllegalThreadStateException
Thread.sleep(1000);
System.out.println("behind sleep");在Thread.sleep(1000);结束后执行
Run run = new Run();
Thread thread = new Thread(run);
thread.start();

不管是接口类型还是Thread类型,都可以作为Thread构造方法的参数。
多个线程同时操作一个变量会出错,线程不安全。
synchronized可以在任何对象或者方法上加锁

currentThread()方法返回代码正在被哪个线程调用的信息
isAlive()方法判断当前的线程是否处于活动状态(启动但是尚未终止) thread.isAlive()
System.out.println(thread.isAlive()); 线程执行完返回false

停止一个线程有三种方法:
1.使用退出标志,是线程正常退出,也就是run方法执行完毕后终止
2.使用stop,不建议使用
3.使用interrupt
1.this.interrupted():测试当前线程是否已经中断,执行后具有将状态标志清除为false的功能
2.this.isinterrupted():测试线程是否已经中断,不清除状态标志
main(){
     thread.interrupt();
}

for (int i = 0;i<500000;i++){
    if (this.isInterrupted())
        break;
    System.out.println(i);
}
System.out.println("这里还是会执行");  
加上一个异常,就不执行for后面的语句了,实现了线程的终止
public void run() {
    super.run();
    try {
        for (int i = 0;i<500000;i++){
            if (this.isInterrupted())
                throw new InterruptedException();
            System.out.println(i);
        }
        System.out.println("这里还是会执行");
    }catch (InterruptedException e){
        e.printStackTrace();
    }
}

原创声明,本文系作者授权云+社区发表,未经许可,不得转载。

如有侵权,请联系 yunjia_community@tencent.com 删除。

编辑于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏Play & Scala 技术分享

空格URL编码的正确使用姿势

41670
来自专栏desperate633

深入理解Java Runtime Area Java运行时数据区Java Runtime Area的分类从线程的角度理解Java Runtime Area从存储内容理解Java Runtime Are

具体的每个区域的内容和特点可以参考《深入理解Java虚拟机》,此书已经讲的很详细了。 下面我们对这几个数据区域进行分类,分别从不同的视角来分析,加深我们的理解

9110
来自专栏Python小屋

Python 3.x中内置函数range()函数的用法

range()是Python开发中非常常用的一个内置函数,语法格式为range([start,] end [, step] ),有range(stop)、ran...

34940
来自专栏余林丰

9.并发包非阻塞队列ConcurrentLinkedQueue

jdk1.7.0_79   队列是一种非常常用的数据结构,一进一出,先进先出。   在Java并发包中提供了两种类型的队列,非阻塞队列与阻塞队列,当然它们都...

26150
来自专栏公众号_薛勤的博客

深入理解Java虚拟机(类文件结构+类加载机制+字节码执行引擎)

周志明的《深入理解Java虚拟机》很好很强大,阅读起来颇有点费劲,尤其是当你跟随作者的思路一直探究下去,开始会让你弄不清方向,难免有些你说的啥子的感觉。但知识不...

17820
来自专栏chenssy

干货分享|Java异常经典14问,你都能答对吗?

异常是在程序执行期间可能发生的错误事件,并且会中断它的正常流程。异常可能来自不同类型的情况,例如用户输入的错误数据,硬件故障,网络连接故障等。

12520
来自专栏java一日一条

Java编程常见问题汇总1

每天在写Java程序,其实里面有一些细节大家可能没怎么注意,这不,有人总结了一个我们编程中常见的问题。虽然一般没有什么大问题,但是最好别这样做。另外这里提到的很...

12520
来自专栏积累沉淀

Java设计模式(八)----代理模式

代理描述 1.生活中: 代理就是一个人或者一个组织代表其他人去做一件事的现实生活中的。在一些情况下,一个客户不想或者不能够直接引用一个对...

22090
来自专栏C/C++基础

函数调用时堆栈的变化情况

函数的正常运行必然要利用堆栈,至少,函数的返回地址是保存在堆栈上的。函数一般要利用参数,而且内部也会用到局部变量,在对表达式进行求值时,编译器还会生成一些无名临...

9310
来自专栏GreenLeaves

C# 引用类型和值类型

1、引用类型 FCL(Framework)中的大多数类型都是引用类型,引用类型总是在托管堆中分配的,C#的new操作符会返回对象的内存地址,也就是指对象数据的内...

21570

扫码关注云+社区

领取腾讯云代金券