Java多线程与并发——进程与线程
1.什么是进程
程序是指令和数据的有序集合,其本身没有任何运行的含义,是一个静态的概念。而进程是程序在处理机上的一次执行过程,它是一个动态的概念。
进程是一个具有一定独立功能的程序,一个实体,每一个进程都有它自己的地址空间。
2.进程的状态
进程执行时的间断性,决定了进程可能具有多种状态。事实上,运行中的进程具有以下三种基本状态。
1)就绪状态
2)运行状态
3)阻塞状态
3.线程
线程实际上是在进程基础之上的进一步划分,一个进程启动之后,里面的若干程序又可以划分成若干个线程。
线程:是进程中的一个执行路径,共享一个内存空间,线程之间可以自由切换,并发执行,一个进程最少有一个线程(单线程程序)
4.线程实现的两种方式
package com.vince;
/**
* 进程:一个具有独立内存空间的执行程序
* 线程:线程是进程中的其中一条执行路径(多条就是多线程),每个进程最少有一个线程
* 同一个进程中的多个线程共享一个内存空间
* 实现多线程的两种方式:
* 1.继承Thread类
* 2.实现Runnable接口(推荐)
* @author acer
*
*/
public class ThreadDemo { public static void main(String[] args) {
System.out.println(Thread.currentThread().getName());
//创建一个线程对象
MyThread mt=new MyThread();
mt.setPriority(Thread.MAX_PRIORITY);//设置抢占CPU执行时间的优先级(只是几率大而已)
mt.setDaemon(true);//将mt设置为守护线程
//mt.run();//直接调用不是启动线程,而是在本线程中执行方法
mt.start();//线程已准备就绪,等待cpu的调度
System.out.println(mt.isAlive()); MyRunnable mr=new MyRunnable();
Thread t=new Thread(mr);
t.start();
System.out.println(t.isAlive()); for(int i=1;i<10;i++){
try {
Thread.sleep(500);
} catch (InterruptedException e) {
// TODO 自动生成的 catch 块
e.printStackTrace();
}
System.out.println(Thread.currentThread().getName()+"--"+i);
if(i==5){
try {
mt.join();//等待
} catch (InterruptedException e) {
// TODO 自动生成的 catch 块
e.printStackTrace();
}
} }
}
//继承Thread类实现线程
static class MyThread extends Thread{
public void run() {
// 在此方法中编写线程要执行的工作
for(int i=1;i<10;i++){
try {
// 在指定的毫秒数加指定的纳秒数内让当前正在执行的线程休眠(暂停执行),
//此操作受到系统计时器和调度程序精度和准确性的影响。
Thread.sleep(500);
} catch (InterruptedException e) {
// TODO 自动生成的 catch 块
e.printStackTrace();
}
System.out.println(Thread.currentThread().getName()+"--"+System.currentTimeMillis()+"--"+i); } }
}
//实现Runnable接口实现线程
static class MyRunnable implements Runnable{
public void run() {
// 在此方法中编写线程要执行的工作
for(int i=1;i<10;i++){
try {
// 在指定的毫秒数加指定的纳秒数内让当前正在执行的线程休眠(暂停执行),
//此操作受到系统计时器和调度程序精度和准确性的影响。
Thread.sleep(500);
} catch (InterruptedException e) {
// TODO 自动生成的 catch 块
e.printStackTrace();
}
System.out.println(Thread.currentThread().getName()+"--"+System.currentTimeMillis()+"--"+i);
}
}
}
}
Java多线程与并发——进程与线程的更多相关文章
- Java多线程基础:进程和线程之由来
转载: Java多线程基础:进程和线程之由来 在前面,已经介绍了Java的基础知识,现在我们来讨论一点稍微难一点的问题:Java并发编程.当然,Java并发编程涉及到很多方面的内容,不是一朝一夕就能够 ...
- 1、Java多线程基础:进程和线程之由来
Java多线程基础:进程和线程之由来 在前面,已经介绍了Java的基础知识,现在我们来讨论一点稍微难一点的问题:Java并发编程.当然,Java并发编程涉及到很多方面的内容,不是一朝一夕就能够融会贯通 ...
- Java多线程1:进程与线程
进程和线程 讲线程和进程前,先讲下同步(Synchronous).异步(Asynchronous).并发(Concurrency).并行(Parallelism). 同步(Synchronous)和异 ...
- Java多线程1:进程与线程概述
进程和线程 谈到多线程,就得先讲进程和线程的概念. 进程 进程可以理解为受操作系统管理的基本运行单元.360浏览器是一个进程.WPS也是一个进程,正在操作系统中运行的".exe"都 ...
- Java多线程1:进程与线程的概念、区别和联系
一.进程的的概念 引用线程之前进程的概念: 进程是表示资源分配的基本单位,也是调度运行的基本单位.例如,用户运行自己的程序,系统就创建一个进程,并为它分配资源,包括内存空间.磁盘空间.I/O设备等.然 ...
- java 多线程1:进程与线程概述
进程和线程 谈到多线程,就得先讲进程和线程的概念. 进程 进程可以理解为受操作系统管理的基本运行单元.360浏览器是一个进程.WPS也是一个进程,正在操作系统中运行的".exe"都 ...
- Java多线程中的进程,线程,并行,并发
2:什么是进程? 通过任务管理器我们就看到了进程的存在. 而通过观察,我们发现只有运行的程序才会出现进程. 进程:就是正在运行的程序. 进程是系统进行资源分配和调用的独立单位.每一个进程都有它自己的内 ...
- Java多线程1:进程和线程的区别
之前看了2天的多线程,就不看了.现在继续拾起来吧.最近有点松散,多线程内容都是看毕向东的视频以及网络教程和各种书籍 什么是进程? 通俗一点讲,就是正在进行的程序,进程是操作系统控制的基本运行单元: 如 ...
- JAVA多线程和并发基础面试问答(转载)
JAVA多线程和并发基础面试问答 原文链接:http://ifeve.com/java-multi-threading-concurrency-interview-questions-with-ans ...
随机推荐
- 上传下载,使用,commons-fileupload,commons-io来加载上传下载
导入两个jarcommons-fileupload.jar,和commons-io.jar 在请求中创建核心类 // 1. 创建工厂对象 FileItemFactory factory = new D ...
- Java常见设计模式之单例模式
1.何为单例模式? 单例模式是一种常用的软件设计模式.在它的核心结构中只包含一个被称为单例类的特殊类.通过单例模式可以保证系统中一个类只有一个实例而且该实例易于外界访问,从而方便对实例个数的 ...
- WPF实现右键菜单
ContextMenu类就是用来做右键菜单的对象,对于任何的控件都可以进行对ContextMenu属性的操作进行设置右键菜单的功能. 下面代码就是对一个按钮添加一个WPF右键菜单的功能: < B ...
- 关于KMeans 最外围点移除实验(其中心保持不变)
import matplotlib.pyplot as plt from sklearn.datasets import make_blobs import numpy as np X,labels ...
- python 基础 操作文件和目录
获得当前目录路径 :os.getcwd() 返回指定目录下的所有文件和目录名:os.listdir() 删除一个文件:os.remove(filename) 删除多个空目录 :os.removefir ...
- RN控件之ProgressBarAndroid进度条
/** * Sample React Native App * https://github.com/facebook/react-native */ 'use strict'; import Rea ...
- Servlet编程实例 续3
----------------siwuxie095 Servlet 跳转之请求的转发 修改 LoginServlet.java: package com.siwuxie095.servlet; im ...
- spring 4.0 注解数据验证1
通常情况下,数据验证都分为前台验证,后台验证.并且前台JS验证是肯定有的,那么其实验证的错误信息根本不必通过后台传过去,哪怕就是想国际化,前台JS也能够胜任. 如果前台验证足够了,那么如果还有不正确的 ...
- 想以编程为职业,现在正在看毕向东的java基础,接下来应该看什么视频,求前辈们指教。
想以编程为职业,现在正在看毕向东的java基础,接下来应该看什么视频,求前辈们指教. https://zhidao.baidu.com/question/1368482680246425699.htm ...
- JSP有哪些动作?
JSP使用动作来动态的插入文件,实现重定向和对JavaBean的引用等功能.它公有6个基本动作:jsp:include,jsp:useBean,jsp:setProperty,jsp:getPrope ...