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 ...
随机推荐
- PHPstorm 常用快捷键操作
1.ctrl+ N: 查找类 2.ctrl+ shift+ N: 全局搜索文件 ,优先文件名匹配的文件 3.ctrl + G: 定位行,跳转行 4.ctrl + F12: 显示当前页面类的所有方法 / ...
- bootstrap插件使用
首先,针对导航栏(单页面导航插件(缓慢跳转)) 引入插件:jquery.singlePageNav.min.js 下载链接:http://pan.baidu.com/s/1jHBaQxg 密码: ...
- [51nod1212]最小生成树模板
解题关键:注意下标 解法一:prim算法 #include<bits/stdc++.h> #define maxv 1002 #define maxm 50002 #define INF ...
- UI线程中非安全操作与安全操作
------------------siwuxie095 工程名:SwingUIThreadSafeTest 包名:com.siwuxie095 ...
- Learning Python 010 函数 1
Python 函数 1 调用函数 举个例子 多于Python内部的函数,你可以在Python的交互式终端中使用help()函数来查看函数的使用方法.比如:abs()函数,如果你不知道如何使用它,你可以 ...
- Mahout0.9 – Clustering (聚类篇)
Mahout – Clustering (聚类篇) Leave a reply 什么是Mahout? " Apache Mahout™ project's goal is to build ...
- 在命令行上启动genymotion虚拟机
自从有了genymotion,多机联调就解放了,一台电脑运行两个genymotion虚拟机毫无压力,不过也看用的是哪种os image,之前我以为google自己的Nexus应该最适应,哪知道开起来比 ...
- hdu1078
#include <stdio.h> #include <string.h> #include <algorithm> using namespace std; i ...
- 关闭QtCreator的vim风格编辑模式
今天不小心点到了键盘的快捷键Alt+V,使QtCreator进入了vim风格编辑模式,导致快捷键拷贝粘贴都不正常,找了下资料才发现是这个问题.具体操作如下: 打开QtCreator去掉下列位置的勾选或 ...
- java String编码转换
/** * Get XML String of utf-8 * * @return XML-Formed string */ public static String getUTF8XMLString ...