1.java的多线程:
运行下面代码并得到结果:
public static void main(String[] args){
ThreadMXBean tmb = ManagementFactory.getThreadMXBean();
ThreadInfo[] threadInfos = tmb.dumpAllThreads(false,false);
for (ThreadInfo threadInfo : threadInfos){
System.out.println("[" + threadInfo.getThreadId() + "] " +threadInfo.getThreadName());
}
得到结果:
[6] Monitor Ctrl-Break
[5] Attach Listener
[4] Signal Dispatcher
[3] Finalizer
[2] Reference Handler
[1] main
2.启动线程的三种方式:
(1)继承Thread类;
(2)实现Runnable接口;
(3)实现Callable接口;
示例代码如下:
public class NewThread {
static class ExtendsThread extends Thread{
@Override
public void run() {
System.out.println("I am extends Thread !");
}
}
static class RunThread implements Runnable{
@Override
public void run() {
System.out.println("I am implemments Runnable !");
}
}
static class CallThread implements Callable<String>{
@Override
public String call() throws Exception {
System.out.println("I am implements Callable !");
return "call";
}
}
public static void main(String[] args) throws ExecutionException, InterruptedException {
ExtendsThread extendsThread = new ExtendsThread();
extendsThread.start();
RunThread runThread = new RunThread();
new Thread(runThread).start();
CallThread callThread = new CallThread();
FutureTask futureTask = new FutureTask(callThread);
new Thread(futureTask).start();
// get()方法是阻塞的
System.out.println(futureTask.get());
}
}
运行结果如下:
I am implemments Runnable !
I am extends Thread !
I am implements Callable !
call