1.进程和线程的区别:
一个程序至少有一个进程,一个进程至少有一个线程
2.概念:
进程:系统进行分配和管理资源的基本单位
线程:进程的一个执行单元,线程被称为轻量级进程,线程是程序执行的最小单位
对于java代码中出现的堵塞问题可以通过jconsole 查看 如下图(会看到具体的行数):

线程的状态:
参考源码Thread中state属性: 六种

Demo类
import org.omg.PortableServer.THREAD_POLICY_ID;
import java.io.IOException;
public class T_state {
private static Object o = new Object();
public static void main(String[] args) throws InterruptedException {
/**
* 第一条线程启动后等待较长时间,并将o对象锁定
*/
Thread t1 = new Thread(() -> {
synchronized (o) {
try {
Thread.sleep(100000L);
} catch (InterruptedException e) {
}
}
});
t1.start();
/****
* 线程2启动去获取o对象的锁
*/
Thread t2 = new Thread(() -> {
synchronized (o) {
}
});
t2.start();
/**
* 主线程等待一下,让线程进入相应的状态
*/
Thread.sleep(100L);
/**
* 查看线程状态:也可以通过jconsole查看
*/
System.out.println(t2.getState());
}
}
通过线程池启动一个线程
import java.util.concurrent.ExecutorService;
import java.util.concurrent.Executors;
public class T_create {
public static void main(String[] args) {
ExecutorService ex = Executors.newSingleThreadExecutor();
//通过线程池启动一条线程
ex.execute(()->{
System.out.println("=========="+ Thread.currentThread().getName());
});
}
}
网友评论