一:进程与线程的区别:
1.线程:程序中单独顺序的控制流,线程本身依靠程序进行运行,线程 是程序中的顺序控制流,只能使用分配给程序的资源和环境。
2.进程:执行中的程序一个程序可以包含一个或多个线程一个进程自少 要包含一个线程。
3.单线程:程序中只存在一个线程,实际上主方法就是一个主线程。
多线程:多线程是在一个程序中运行多个任务,多线程的目的是更 好的使用CPU资源。
二:线程的实现:
1.在Java中,线程的实现有2种:
<1>继承Thread类
<2>实现Runnable接口
2.Thread 类:
Thread类是在Java.lang包中定义的,继承Thread类必须重写run()方法
定义的格式:
class 类名 extends Thread{
run(){};
}
3.Runnable接口
一 二代码实例在最后。
三:线程的状态
1.线程也有固定的操作状态
创建状态:准备好了一个多线程的对象
就绪状态:调用了strat()方法,等待cpu进行调度
运行状态:执行run()方法
阻塞状态:暂时停止执行,可能将资源交给其他线程使用
终止状态(死亡状态):线程销毁
四:线程的常用方法
1.取得线程名字
getName()
2.取得当前线程对象
currentThread()
3.判断线程是否启动
isAlive()
4.线程的强行运行
join()
5.线程的休眠
sleep()
五:线程的优先级别
1-MIN_PRIORITY
10-MAX_PRIORITY
5-NORM_PRIORITY
如果什么都不设置默认值是5
六:同步与死锁
什么时候需要使用同步:在资源共享的时候需要
1.同步代码块
在代码块上加"synchronized"关键字,则此代码块就称为同步代码块。
2.同步代码块格式:
synchronized(同步对象){
需要同步的代码块;
}
3.同步方法:
除了代码块可以同步,方法也是可以同步的
4.方法同步格式:
synchronized void 方法名称(){}
5.死锁:所谓死锁: 是指两个或两个以上的进程在执行过程中,由于竞争资源或者由于彼此通信而造成的一种阻塞的现象,若无外力作用,它们都将无法推进下去。此时称系统处于死锁状态或系统产生了死锁,这些永远在互相等待的进程称为死锁进程。
比如:大学生找工作要找高薪的而企业要有经验才给高薪,如果双方标准都不降低就无法继续。
七:线程的生命周期
一和二代码: 代码一run方法: package Java线程; public class MyThread extends Thread { private String name; //创建构造方法进行传参 public MyThread(String name){ this.name=name; } //重写Run方法 public void run(){ //为了能看到用for循环做打印 for(int i=0;i<1000;i++){ System.out.println(name+":"+i); } //super.run(); } } 代码一run方法: package Java线程; //调用线程的主方法 public class ThreadDemo{ public static void main(String [] args){ //实例化线程A B启动线程 MyThread t1=new MyThread("线程A:"); MyThread t2=new MyThread("线程B:"); //线程的启动是通过start()方法启动的 t1.start(); t2.start(); } } 代码二:Runnable接口 package 线程2; //第二种方法通过实现Runnable接口来实现线程 public class MyRunnable implements Runnable{ private String name; //构造方法传递参数标识当前线程 public MyRunnable(String name){ this.name=name; } //Runnable接口也要重写run方法 public void run() { for(int i=0;i<1000;i++){ System.out.println(name+":"+i); } } } 代码二:runnable接口 package 线程2; public class ThreadDemo2 { public static void main(String[] args) { //实现MyRunnable MyRunnable r1=new MyRunnable("线程A:");//A是一个name 标识当前的线程 MyRunnable r2=new MyRunnable("线程B:"); //runnable 接口不存在启动方法要通过线程启动 Thread t1=new Thread(r1);//r1 r2为传递进来的Runnable 对象 Thread t2=new Thread(r2); t1.start(); t2.start(); } } 代码三同步与死锁: package Java线程; //线程的同步与死锁 class MyThreadDemo implements Runnable{ private int ticket=5; public void run() { for(int i=0;i<10;i++){ //调用tell方法 tell(); //为了资源能够共享使用线程同步(第一种方法) /*synchronized (this) { if(ticket>0){ try { Thread.sleep(500); } catch (InterruptedException e) { e.printStackTrace(); } System.out.println("车票:"+ticket--); */ } } //第二种使用线程同步方法来实现线程同步实现资源共享 public synchronized void tell(){ if(ticket>0){ try { Thread.sleep(500); } catch (InterruptedException e) { e.printStackTrace(); } System.out.println("车票:"+ticket--); } } } public class ThreadDemo05 { //主方法 public static void main(String[] args) { MyThreadDemo m=new MyThreadDemo(); Thread t1=new Thread(m); Thread t2=new Thread(m); Thread t3=new Thread(m); t1.start(); t2.start(); t3.start(); } }
相关推荐
java多线程与进程调度,针对多线程和进程的讲解
Java 进程与线程 线程的概念模型 线程类 线程的同步与互斥
《JAVA多线程设计模式》PDF 下载 《Java线程 高清晰中文第二版》中文第二版(PDF) 前言 第一章 线程简介 Java术语 线程概述 为什么要使用线程? 总结 第二章 Java线程API 通过Thread类创建线程 使用Runable接口...
比如java.exe进程中可以运行很多线程。线程总是属于某个进程,进程中的多个线程共享进程的内存。 “同时”执行是人的感觉,在线程之间实际上轮换执行。 本文档提供Java多线程编程经验,方便广大Java爱好者研究学习...
Java线程:概念与原理 2 一、操作系统中线程和进程的概念 2 二、Java中的线程 3 三、Java中关于线程的名词解释 3 四、线程的状态转换和生命周期 4 Java线程:创建与启动 7 Java线程:线程名称的设定及获取 10 Java...
Java 给多线程编程提供了内置的支持。 一条线程指的是进程中一个单一顺序的控制流,一个进程中可以并发多个线程,每条线程并行执行不同的任务。 多线程是多任务的一种特别的形式,但多线程使用了更小的资源开销。 ...
Unix操作系统环境下,应用程序可以利用fork函数创建子进程,但子进程与该应用程序进程拥有独立的地址空间、系统资源和代码执行单元,并且进程的 调度是由操作系统来完成的,使得在应用进程之间进行通信和线程协调...
一个进程可以创建多个线程,线程与线程间的通信方式比较容易。本设计主要是编写一个多线程的网络通信程序,不同的线程处理不同类型的消息,比如有专门处理TCP的线程、专门处理UDP消息的线程等。
比如java.exe进程中可以运行很多线程。线程总是属于某个进程,进程中的多个线程共享进程的内存。 “同时”执行是人的感觉,在线程之间实际上轮换执行。 Java线程是Java语言中一个非常重要的部分,Java5之前,多线程...
73道Java面试题合集-多线程与进程
对于一个进程中的多个线程来说,多个线程共享进程的内存块,当有新的线程产生的时候,操作系统不分配新的内存,而是让新线程共享原有的进程块的内存。因此,线程间的通信很容易,速度也很快。不同的进程因为处于不同...
JAVA从入门到精通.孙鑫老师主讲
操作系统中的进程、线程与Java的多线程
模拟电影院的多线程购票系统,使用同步锁机制保证数据的安全,同时使用集合的减法来进行,顾客买票时选购位置
java实现守护进程,有单独的监听进程, 两个或多个进程,两个或多个jvm java -jar heshenboot.jar start|stop
线程与父进程的其他线程共享进程所有的全部资源。 独立运行,采用独占方式。 一个线程可以创建和删除另外一个线程。 同一个进程中的多个线程之间可以并发执行。 线程的调度管理是由进程来完成的。 注意:编程...
里面详细讲述了Java 的多线程,程序、进程和线程的概念
与此相反,像java所使用的这种并发系统会共享内存或I/O这样的资源,因此编程编写多线程程序最基本的困难在于,协调不同线程驱动的任务之间这些资源的使用,以便使得这些资源不会同时被多个任务访问。
进程与线程的一个简单解释,教你简单区分程序设计过程中的进程与线程问题,有助于你对多线程编程的理解
用java实现的操作系统多线程编程,用Eclipse编写。内有实验指导书,导入绝对能运行。