`

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中多线程处理与多媒体应用的核心技术,具体目标包括: 1. **理解线程概念**:线程是操作系统能够进行运算调度的最小...

    JAVA线程与进程的区别

    "JAVA线程与进程的区别" JAVA语言中,线程(Thread)和进程(Process)是两个基本概念,它们都是操作系统所体会的程序运行的基本单元,系统利用该基本单元实现系统对应用的并发性。但是,它们之间有着本质的区别。 ...

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

    在IT领域,尤其是Java编程中,多线程是不可或缺的一部分,它使得程序能够同时执行多个任务,极大地提高了程序的效率和响应性。本教程“Java的多线程”由孙鑫老师主讲,旨在帮助初学者从入门到精通地掌握这一关键技能...

    java多线程文件传输

    Java多线程文件传输是Java编程中一个重要的实践领域,特别是在大数据处理、网络通信和分布式系统中。在Java中,多线程可以提高程序的执行效率,尤其在处理并发任务时,如大文件的上传、下载和传输。下面将详细探讨...

    java多线程的讲解和实战

    Java多线程是Java编程中的重要概念,尤其在如今的多核处理器环境下,理解并熟练掌握多线程技术对于提高程序性能和响应速度至关重要。本资料详细讲解了Java多线程的原理,并提供了丰富的实战代码,非常适合Java初学者...

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

    Java多线程与并发编程是Java开发中至关重要的一部分,它涉及到如何高效地利用CPU资源,以实现程序的并行执行。在操作系统层面,多任务和多进程是通过分配不同的内存空间来实现的,而线程则共享同一进程的内存,这...

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

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

    java多线程处理数据库数据

    在Java编程中,多线程处理是提升程序性能和效率的重要手段,特别是在处理大量数据库数据时。本主题将深入探讨如何使用Java的并发包(java.util.concurrent)来实现多线程对数据库数据的批量处理,包括增、删、改等...

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

    在操作系统中,多线程编程和多进程编程是并发执行任务的重要手段,特别是在Java这样的高级编程语言中,它们的应用尤为广泛。 首先,我们要理解“多线程”这一概念。线程是操作系统中的一个基本执行单元,每个线程都...

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

    总的来说,Java实现守护进程、监听进程以及管理多个进程和JVM涉及多线程、网络编程、进程间通信等多个方面,需要对Java的API有深入理解,并熟悉操作系统级别的进程管理。通过这种方式,我们可以构建出强大、灵活的...

    Java 多线程 PPT

    本文将深入探讨Java多线程的相关概念、线程类和接口的使用,以及线程的同步与互斥。 首先,我们需要理解进程与线程的基本概念。程序是一组静态指令的集合,而进程则是程序在执行过程中的一个实例,拥有独立的内存...

    JAVA教程解析Java的多线程机制

    ### JAVA教程解析Java的多线程机制 #### 进程与应用程序的区别 ...通过对进程与线程的理解,以及掌握Java中实现多线程的不同方法,开发者可以更好地利用现代多核处理器的优势,优化应用程序的性能。

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

    "操作系统中的进程、线程与Java的多线程" 操作系统中的进程是指特定的代码序列在指定数据集上的一次执行活动,是指并行程 序的的一次执行过程。在Windows 95中,就是一个EXE文件的执行过程。这是一个动态概念,具有...

    JAVA多线程练习题答案。

    JAVA多线程练习题答案详解 在本文中,我们将对 JAVA 多线程练习题的答案进行详细的解释和分析。这些题目涵盖了 JAVA 多线程编程的基本概念和技术,包括线程的生命周期、线程同步、线程状态、线程优先级、线程安全等...

    Java程序设计\java 多线程

    在Java编程中,多线程是一项关键特性,它允许程序同时执行多个独立的代码段,提高了应用程序的效率和响应性。下面将详细讲解Java多线程的相关概念、创建线程的方式以及线程同步和调度。 5.1 相关概念: 1. **程序**...

    java 多线程课件

    Java多线程是Java编程中的一个重要概念,它允许程序同时执行多个任务,从而提高了程序的效率和响应速度。在Java中,多线程支持是语言级别的,这意味着开发者可以轻松地创建和管理并发执行的线程。 首先,我们要理解...

    Java多线程技术精讲

    Java多线程技术是Java编程中的重要组成部分,它允许程序同时执行多个任务,极大地提高了程序的效率和响应性。在现代计算机系统中,多线程是实现并发处理的关键技术,尤其在服务器端应用和高性能计算中不可或缺。 ...

Global site tag (gtag.js) - Google Analytics