`

Java进程与多线程

 
阅读更多
一:进程与线程的区别:
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();
    }


}




 
  • 大小: 31.8 KB
分享到:
评论

相关推荐

    java多线程与进程调度

    java多线程与进程调度,针对多线程和进程的讲解

    Java 多线程 PPT

    Java 进程与线程 线程的概念模型 线程类 线程的同步与互斥

    java 多线程设计模式 进程详解

    《JAVA多线程设计模式》PDF 下载 《Java线程 高清晰中文第二版》中文第二版(PDF) 前言 第一章 线程简介 Java术语 线程概述 为什么要使用线程? 总结 第二章 Java线程API 通过Thread类创建线程 使用Runable接口...

    Java多线程编程经验

    比如java.exe进程中可以运行很多线程。线程总是属于某个进程,进程中的多个线程共享进程的内存。 “同时”执行是人的感觉,在线程之间实际上轮换执行。 本文档提供Java多线程编程经验,方便广大Java爱好者研究学习...

    java多线程笔记

    Java线程:概念与原理 2 一、操作系统中线程和进程的概念 2 二、Java中的线程 3 三、Java中关于线程的名词解释 3 四、线程的状态转换和生命周期 4 Java线程:创建与启动 7 Java线程:线程名称的设定及获取 10 Java...

    Java多线程编程指南

    Java 给多线程编程提供了内置的支持。 一条线程指的是进程中一个单一顺序的控制流,一个进程中可以并发多个线程,每条线程并行执行不同的任务。 多线程是多任务的一种特别的形式,但多线程使用了更小的资源开销。 ...

    解析Java的多线程机制

    Unix操作系统环境下,应用程序可以利用fork函数创建子进程,但子进程与该应用程序进程拥有独立的地址空间、系统资源和代码执行单元,并且进程的 调度是由操作系统来完成的,使得在应用进程之间进行通信和线程协调...

    java多线程服务器

    一个进程可以创建多个线程,线程与线程间的通信方式比较容易。本设计主要是编写一个多线程的网络通信程序,不同的线程处理不同类型的消息,比如有专门处理TCP的线程、专门处理UDP消息的线程等。

    java多线程编程教程

    比如java.exe进程中可以运行很多线程。线程总是属于某个进程,进程中的多个线程共享进程的内存。 “同时”执行是人的感觉,在线程之间实际上轮换执行。 Java线程是Java语言中一个非常重要的部分,Java5之前,多线程...

    73道Java面试题合集-多线程与进程

    73道Java面试题合集-多线程与进程

    Java_多线程与并发编程总结.doc

    对于一个进程中的多个线程来说,多个线程共享进程的内存块,当有新的线程产生的时候,操作系统不分配新的内存,而是让新线程共享原有的进程块的内存。因此,线程间的通信很容易,速度也很快。不同的进程因为处于不同...

    Java 的多线程,程序、进程和线程的概念31

    JAVA从入门到精通.孙鑫老师主讲

    操作系统中的进程、线程与Java的多线程.pdf

    操作系统中的进程、线程与Java的多线程

    java实现多线程购票系统

    模拟电影院的多线程购票系统,使用同步锁机制保证数据的安全,同时使用集合的减法来进行,顾客买票时选购位置

    java实现守护进程,有单独的监听进程, 两个或多个进程,两个或多个jvm

    java实现守护进程,有单独的监听进程, 两个或多个进程,两个或多个jvm java -jar heshenboot.jar start|stop

    java学习多线程处理

    线程与父进程的其他线程共享进程所有的全部资源。 独立运行,采用独占方式。 一个线程可以创建和删除另外一个线程。 同一个进程中的多个线程之间可以并发执行。 线程的调度管理是由进程来完成的。 注意:编程...

    Java 的多线程,程序、进程和线程的概念

    里面详细讲述了Java 的多线程,程序、进程和线程的概念

    Java多线程之基础篇(一).docx

    与此相反,像java所使用的这种并发系统会共享内存或I/O这样的资源,因此编程编写多线程程序最基本的困难在于,协调不同线程驱动的任务之间这些资源的使用,以便使得这些资源不会同时被多个任务访问。

    进程与线程的一个简单解释

    进程与线程的一个简单解释,教你简单区分程序设计过程中的进程与线程问题,有助于你对多线程编程的理解

    操作系统,多线程编程,多进程编程,java

    用java实现的操作系统多线程编程,用Eclipse编写。内有实验指导书,导入绝对能运行。

Global site tag (gtag.js) - Google Analytics