标签:共享 cup 输出 分类 是否存活 加锁 相同 enter image
并发理解:在单核机器上,从微观角度来看,一段时间内cup只能执行一个任务,但是因为cup在只执行一段代码段的时候大部分的时间是处于等待程序的,所以可以再开几条程序,然后通过轮询机制,让cpu执行多个进程,从宏观角度来看就是所谓的并发。如果机器是多核,那么就是真正的并发。
线 程 优 先 级 主 要 分 三 种 : MAX_PRIORITY( 最 高 级 );MIN_PRIORITY ( 最 低 级 )NORM_PRIORITY(标准)默认
一个栈就是一个线程,所谓的并发就是多个不同的栈。
class CreateRunnable implements Runnable {
@Override
publicvoid run() {
for (inti = 0; i< 10; i++) {
System.out.println("i:" + i);
}
}
}
public class ThreadDemo2 {
publicstaticvoid main(String[] args) {
System.out.println("-----多线程创建开始-----");
// 1.创建一个线程
CreateRunnable createThread = new CreateRunnable();
// 2.开始执行线程 注意 开启线程不是调用run方法,而是start方法
System.out.println("-----多线程创建启动-----");
Thread thread = new Thread(createThread);
thread.start();
}
}
System.out.println("-----多线程创建开始-----");
Thread thread = new Thread(new Runnable() {
public void run() {
for (int i = 0; i< 10; i++) {
System.out.println("i:" + i);
}
}
});
thread.start();
System.out.println("-----多线程创建结束-----");
synchronized(object){
[并发逻辑]
}
public synchronized int getTicket(){
}
join等到指定的线程执行完后执行
不同点:wait()会释放对象的同步锁,而sleep()则不会释放锁
当在主线程当中执行到t1.join()方法时,就认为主线程应该把执行权让给t1
有两个原因会导致线程死亡:
- 1) run方法正常退出而自然死亡,
- 2) 一个未捕获的异常终止了run方法而使线程猝死。
- 为了确定线程在当前是否存活着(就是要么是可运行的,要么是被阻塞了),需要使用isAlive方法。如果是可运行或被阻塞,这个方法返回true; 如果线程仍旧是new状态且不是可运行的, 或者线程死亡了,则返回false.
4>线程在等待某个触发条件;
标签:共享 cup 输出 分类 是否存活 加锁 相同 enter image
原文地址:https://www.cnblogs.com/frankltf/p/10311848.html