标题:
Java中的多线程你只要看这一篇就够了(4)基本线程类
[打印本页]
作者:
look_w
时间:
2018-12-15 13:29
标题:
Java中的多线程你只要看这一篇就够了(4)基本线程类
太祖长拳:基本线程类基本线程类指的是Thread类,Runnable接口,Callable接口
Thread 类实现了Runnable接口,启动一个线程的方法:
MyThread my =
new
MyThread(); my.start();
Thread类相关方法:
[url=]
[/url]
//
当前线程可转让cpu控制权,让别的就绪状态线程运行(切换)
public
static
Thread.yield()
//
暂停一段时间
public
static
Thread.sleep()
//
在一个线程中调用other.join(),将等待other执行完后才继续本线程。
public
join()
//
后两个函数皆可以被打断
public
interrupte()[url=]
[/url]
关于中断
:它并不像stop方法那样会中断一个正在运行的线程。线程会不时地检测中断标识位,以判断线程是否应该被中断(中断标识值是否为true)。终端只会影响到wait状态、sleep状态和join状态。被打断的线程会抛出InterruptedException。
Thread.interrupted()检查当前线程是否发生中断,返回boolean
synchronized在获锁的过程中是不能被中断的。
中断是一个状态!interrupt()方法只是将这个状态置为true而已。所以说正常运行的程序不去检测状态,就不会终止,而wait等阻塞方法会去检查并抛出异常。如果在正常运行的程序中添加while(!Thread.interrupted()) ,则同样可以在中断后离开代码体
Thread类最佳实践
:
写的时候最好要设置线程名称 Thread.name,并设置线程组 ThreadGroup,目的是方便管理。在出现问题的时候,打印线程栈 (jstack -pid) 一眼就可以看出是哪个线程出的问题,这个线程是干什么的。
如何获取线程中的异常
不能用try,catch来获取线程中的异常
Runnable与Thread类似
Callablefuture模式:并发模式的一种,可以有两种形式,即无阻塞和阻塞,分别是isDone和get。其中Future对象用来存放该线程的返回值以及状态
ExecutorService e = Executors.newFixedThreadPool(3
);
//
submit方法有多重参数版本,及支持callable也能够支持runnable接口类型.
Future future = e.submit(
new
myCallable());future.isDone()
//
return true,false 无阻塞
future.get()
//
return 返回值,阻塞直到该线程运行结束
欢迎光临 电子技术论坛_中国专业的电子工程师学习交流社区-中电网技术论坛 (http://bbs.eccn.com/)
Powered by Discuz! 7.0.0