Java 线程学习
来源:互联网 发布:卓智网络 锐捷 拉萨 编辑:程序博客网 时间:2024/05/16 13:57
并行和并发
并行:指两个或多个事件在同一时刻点发生;
并发:指两个或多个事件在同一时间段内发生。
进程和线程
进程与线程的区别
进程:有独立的内存空间,进程中的数据存放空间(堆空间和栈空间)是独立的,每一个进程至少有一个线程。
线程:堆空间是共享的,栈空间是独立的。线程消耗的资源比进程小。
多进程:操作系统中同时运行的多个程序。
多线程:一个进程同时运行多个任务。
线程调度
只有一个CPU时,在任意时刻只能执行一条计算机指令,每一个进程只有获得CPU的使用权才能执行指令。在可运行池中,会有多个线程处于就绪状态等待CPU.JVM负责了线程的调度。
JVM采用的是抢占式调度,没有采用分时调度。
多线程优势
1、线程可以共享堆内存
2、创建线程系统开销小
3、Java语言本身内置多线程功能的支持
严格来讲,多线程并不是提高了程序的运行效率,而是通过提高资源的使用效率来提高系统的效率。
Java操作进程
在java中如何运行一个进程
方式1:Runtime的exec方法。
方式2:ProcessBuilder的start方法。
例子:
//在java中简单获取一个进程/** * 需求 : 运行记事本程序 * * 方式1 :Runtime类的exec方法 * 方式2 :ProcessBuilder的start方法 * */public class ProcessDemo { public static void main(String[] args) throws IOException{ // 方式1 Runtime类的exec方法 Runtime runtime = Runtime.getRuntime(); runtime.exec("notepad"); // 方式2 ProcessBuilder的start方法 ProcessBuilder bp = new ProcessBuilder("notepad"); bp.start(); }}
创建并启动线程
线程常考面试题
1、java中有几种方法可以实现一个线程?用什么关键字修饰同步方法?
有两种实现方法,分别是继承 Thread 类与实现 Runnable 接口。
new Thread(){ public void run(){ } }.start();
new Thread(new Runnable(){ public void run(){ } } ).start();
## 2、sleep() 和 wait()区别 ##sleep 是线程类(Thread)的方法,导致此线程暂停执行指定时间,把执行机会给其他线程,但是监控状态依然保持,到时后会自动恢复。调用 sleep **不会释放对象锁**。 wait 是 Object 类的方法,对此对象调用 wait 方法导致本线程**放弃对象锁**,进入等待此对象的等待锁定池,只有针对此对象发出 notify 方法(或 notifyAll)后本线程才进入对象锁定池准备获得对象锁进入运行状态。## 单例模式 ## //单例模式- 饿汉式 class ArrayUtil { private static final ArrayUtil instance = new ArrayUtil(); private ArrayUtil() { } public static ArrayUtil getInstance() { return instance; } public void work() { System.out.println("工作"); } }
//单例模式- 懒汉式 class ArrayUtil2{ private static ArrayUtil2 instance = null; public static ArrayUtil2 getInstance(){ if(instance == null){ instance = new ArrayUtil2(); } return instance; } public void work(){ System.out.println("工作"); } }
阅读全文
0 0
- java学习日记(线程)
- Java线程学习
- java线程学习基础
- java线程学习总结
- JAVA学习【知】线程
- Java学习之多线程
- java线程初步学习
- Java线程学习11.30
- java线程学习例子
- 关于java 线程学习
- java线程学习总结
- Java 线程池学习
- java线程的学习
- java线程的学习
- java线程池学习
- Java 线程池学习
- java线程学习
- java线程学习
- CodeForces 442A Borya and Hanabi
- c++学习笔记-----const指针
- 【Linux C/C++】 第09讲 HTTP协议与浏览器显示网页
- MYSQL5.7.17设置初始密码
- [最短路 Bfs 二维线段树] JOI Open Contest 2017 Golf
- Java 线程学习
- [几何 扫描线 最大子段和] JOI Open Contest 2017 Bulldozer
- [通信题] JOI Open Contest 2017 Amusement Park
- RQNOJ愚蠢的矿工
- 蓝牙L2CAP【CID分配】【L2CAP层图解】
- 每日英语阅读(二)
- xUtils3 Https请求报错:javax.net.ssl.SSLPeerUnverifiedException: Hostname ***.****.**not verified,跳过证书检测
- 深入探索构造函数
- 前缀树Trie