java多线程快速入门(一)
1、什么是进程
比如:QQ、QQ游戏、eclipse都是进程,可以通过任务管理器查看进程
2、进程和线程区别
线程是进程的一部分,一个进程可以包含多个线程,一个线程只能属于一个进程
进程是所有线程的集合,一个线程是进程中的一条执行路径
3、多线程的好处
多线程的好处就是提高程序的效率
4、多线程的应用场景
迅雷下载视频、QQ同时和多人聊天、批量发送短信,批量上传资源
5、使用继承Thread类还是使用实现Runnable接口好?
使用实现Runnable接口好,原因是接口可以实现多个,类只能继承一个,实现了Runnable接口还可以继承其它的类,继承了Thread类就不能再继承其它的类,一般情况下使用线程池方便管理,避免浪费资源。
6、启动线程是使用start方法还是run方法?
run方法相当于调用重写后的run方法,而不是去开启一个线程
7、多线程创建方式
继承Thread、实现Runnable接口、匿名内部类
8、什么是java内存模型
就是多个线程访问同一变量的时候保证一致性
9、使用wait和sleep区别
wait:调用wait方法,当前线程释放锁,并且必须要调用notify才能重新变为阻塞
sleep:调用sleep不会释放当前锁,当前线程会等待sleep时间到达,继续执行
10、Lock与synchronized的区别
Lock锁是JDK1.5之后推出的并发包里面的关键字,Lock锁可以人为的释放锁(相当于汽车中的手动挡)
synchronized当线程执行完毕或者抛出异常的话,锁自动释放(相当于汽车中的自动挡)
java多线程快速入门(一)的更多相关文章
- java 多线程 快速入门
------------恢复内容开始------------ java 多线程 快速入门 1. 进程和线程 什么是进程? 进程是正在运行的程序它是线程的集合 进程中一定有一个主线程 一个操作系统可以有 ...
- java多线程快速入门(六)
多线程应用实例(批量发送短信) 1.创建实体类 package com.cppdy; public class UserEntity { private int id; private String ...
- java多线程快速入门(二十二)
线程池的好处: 避免我们过多的去new线程,new是占资源的(GC主要堆内存) 提高效率 避免浪费资源 提高响应速度 作用:会把之前执行某个线程完毕的线程不会释放掉会留到线程池中给下一个调用的线程直接 ...
- java多线程快速入门(二十一)
CountDownLatch(闭锁)计数器 有一个任务A,它要等待其他4个任务执行完毕之后才执行,此时就可以利用CountDownLatch来实现这种功能 package com.cppdy; imp ...
- java多线程快速入门(二十)
1.Java.util的线程安全工具类 Vector(线程安全) ArrayList(线程不安全) HashTable(线程安全) HashMap(线程不安全) 2.将线程不安全集合变为线程安全集合 ...
- java多线程快速入门(十八)
Lock锁是JDK1.5之后推出的并发包里面的关键字(注意捕获异常,释放锁) Lock与synchronized的区别 Lock锁可以人为的释放锁(相当于汽车中的手动挡) synchronized当线 ...
- java多线程快速入门(十七)
多线程通讯实例(必须要有多个线程.必须要管理同一个变量:线程A生产一个变量,线程B消费一个变量) package com.cppdy; class User { public String usern ...
- java多线程快速入门(十五)
使用violate关键字解决了变量的可见性问题(volatile让多线程刷新falg的值) package com.cppdy; class MyThread11 extends Thread { / ...
- java多线程快速入门(十四)
使用atomicInteger解决了原子性问题(AtomicInteger保证每次只能一个线程操作count) package com.cppdy; import java.util.concurre ...
随机推荐
- vs widows服务的发布
1.在service1.cs里空白处点击右键,弹出菜单选择 添加安装程序 2.自动生成ProjectInstaller.cs文件后 可在InitializeComponent()方法里自定义服务名称 ...
- k8s 常用命令汇集
通过yaml文件创建: kubectl create -f xxx.yaml (不建议使用,无法更新,必须先delete) kubectl apply -f xxx.yaml (创建+更新,可以重复使 ...
- MySQL5.5登录密码忘记了,怎嘛办?
1.关闭正在运行的MySQL. 2.打开DOS窗口,转到mysql\bin目录. 3.输入mysqld --skip-grant- tables回车.如果没有出现提示信息,那就对了. 4.再开一 ...
- promise用法详解
es6的promise可谓是异步书写的一大福音,过去异步js书写是函数嵌套函数的方式,promise出现后书写异步js代码就变得美观得多了 以前的写法:回调函数不停嵌套 ajax('/banners' ...
- xen 基础命令学习
# 查看创建的虚拟机的uuid xe vm-list # 开启虚拟机启动顺序功能 xe vm-param-set HVM-boot-policy="BIOS order" uuid ...
- JS 将字符串数组用 | 或其他符号分割
var arr = ["吕超","赵云","典韦","关羽","马超","张飞" ...
- JAVA-大白话探索JVM-类加载器(一)
JVM??? Java语言的一个非常重要的特点就是与平台的无关性.而使用Java虚拟机是实现这一特点的关键.JVM是Java Virtual Machine(Java虚拟机)的缩写,Java程序编译后 ...
- POJ 2796[UVA 1619] Feel Good
Feel Good Time Limit: 3000MS Memory Limit: 65536K Total Submissions: 16786 Accepted: 4627 Case T ...
- 单源最短路径问题(dijkstra算法 及其 优化算法(优先队列实现))
#define _CRT_SECURE_NO_WARNINGS /* 7 10 0 1 5 0 2 2 1 2 4 1 3 2 2 3 6 2 4 10 3 5 1 4 5 3 4 6 5 5 6 9 ...
- C# PointToScreen
子窗体定位时,如果主窗口不在左上角,需要根据主窗口的坐标,相减才行. Point p1 = Label.PointToScreen(new Point(0, 0)); p1.X -= this.X; ...