java多线程(简单介绍)

简单介绍

  线程是程序运行的基本执行单元。当操作系统(不包括单线程的操作系统,如微软早期的DOS)在执行一个程序时,会在系统中建立一个进程,而在这个进程中,必须至少建立一个线程(这个线程被称为主线程)来作为这个程序运行的入口点。因此,在操作系统中运行的任何程序都至少有一个主线程。

  线程不仅可以共享进程的内存,而且还拥有一个属于自己的内存空间,这段线程不仅可以共享进程的内存,而且还拥有一个属于自己的内存空间,这段部所使用的数据,如线程执行函数中所定义的变量。

注意:任何一个线程在建立时都会执行一个函数,这个函数叫做线程执行函

线程类的一些常用方法

  sleep(): 强迫一个线程睡眠N毫秒。

  isAlive(): 判断一个线程是否存活。

  join(): 等待线程终止。 //只有等到子线程结束了主线程才能执行。(Waits for this thread to die.)

  activeCount(): 程序中活跃的线程数。

  enumerate(): 枚举程序中的线程。

  currentThread(): 得到当前线程。

  isDaemon(): 一个线程是否为守护线程。

  setDaemon(): 设置一个线程为守护线程。(用户线程和守护线程的区别在于,是否等待主线程依赖于主线程结束而结束)

  setName(): 为线程设置一个名称。

  wait(): 强迫一个线程等待。

  notify(): 通知一个线程继续运行。

  setPriority(): 设置一个线程的优先级

多线程的实现方式

通过以下两种方法创建 Thread 对象:

继承Thread

Java中“一切皆对象”,线程也被封装成一个对象。我们可以通过继承Thread类来创建线程。线程类中的的run()方法包含了该线程应该执行的指令。我们在衍生类中覆盖该方法,以便向线程说明要做的任务:

声明一个 Thread 类的子类,并覆盖 run() 方法

class myThread extends Thread{
    @Override
    public void run() {
        System.out.println("继承Thread");
    }
}

简单例子

main执行

 System.out.println("多线程开始:");
        for(int i=1;i<=10;i++) {
            stat(i);
        }
//随机延迟
public static int reandom(int stop,int stat ){    return (int)Math.round(Math.random()*(stat-stop)+stop);}

public static void stat(int i){
        System.out.print("线程:"+i+" 开始运行");
        Thread t=new Thread(){
            public void run(){
                System.out.println(UUID.randomUUID());
            }
        };
        int s=reandom(5,2);
        System.out.print("  延迟:"+s+"秒  唯一UUID:");
        try {
            t.sleep(s*1000);
        } catch (InterruptedException e) {
            e.printStackTrace();
        }
        t.start();
        try {
            t.join();
        } catch (InterruptedException e) {
            e.printStackTrace();
        }
    

固定线程

  //固定线程10
        ExecutorService service =Executors.newFixedThreadPool(10);

        for (int i = 0; i < 23; i++) {
            service.execute(new Runnable() {
                @Override
                public void run() {
                    System.out.println(Thread.currentThread());
                }
            });
        }

原文地址:https://www.cnblogs.com/weibanggang/p/9468256.html

时间: 2024-10-09 22:30:03

java多线程(简单介绍)的相关文章

iOS开发多线程篇—多线程简单介绍

iOS开发多线程篇—多线程简单介绍 一.进程和线程 1.什么是进程 进程是指在系统中正在运行的一个应用程序 每个进程之间是独立的,每个进程均运行在其专用且受保护的内存空间内 比如同时打开QQ.Xcode,系统就会分别启动2个进程 通过“活动监视器”可以查看Mac系统中所开启的进程 2.什么是线程 1个进程要想执行任务,必须得有线程(每1个进程至少要有1条线程) 线程是进程的基本执行单元,一个进程(程序)的所有任务都在线程中执行 比如使用酷狗播放音乐.使用迅雷下载电影,都需要在线程中执行 3.线程

java 的简单介绍

一.Java 特点     1.简单: 和C++相比较     2.面向对象     3.跨平台    由于它是先编译后解释 + JVM(屏蔽底层操作系统的差异) 二.程序的运行一般有两种:     1.编译  源文件 ------> 编译器  机器码文件       快  无法跨平台     2.解释  源文件 ------> 解释器  逐行翻译并运行   慢  可以跨平台 三.Java运行机制: 先编译,后解释     .java 源文件  -------> 编译器 .class 字

iOS多线程技术—多线程简单介绍

iOS多线程技术—多线程简单介绍 一.进程和线程 1.什么是进程 进程是指在系统中正在运行的一个应用程序 每个进程之间是独立的,每个进程均运行在其专用且受保护的内存空间内 比如同时打开QQ.Xcode,系统就会分别启动2个进程 通过“活动监视器”可以查看Mac系统中所开启的进程 2.什么是线程 1个进程要想执行任务,必须得有线程(每1个进程至少要有1条线程) 线程是进程的基本执行单元,一个进程(程序)的所有任务都在线程中执行 比如使用酷狗播放音乐.使用迅雷下载电影,都需要在线程中执行 3.线程的

Java 多线程 简单实例 (消费者与生成者)的关系

PS::线程这套东西在PHP里完全是不存在的概念,有待进一步的学习: PS::这个实例是根据书本上的知识进行扩展的,理解程度50%左右吧! 1.定义生产消费环境 package second; public class Queue { int value = 0; boolean isEmpty = true; /** * 生产者 * @param v */ public synchronized void put(int v){ if(!isEmpty){//如果存在数据没有被消费 try{

关于bean.java的简单介绍!

关于bean.java功能介绍 ·JavaBean是使用Java语言开发的一个可重用的组件,在JSP的开发中可以使用JavaBean减少重复代码,使整个JSP代码的开发更简洁. 个人理解:bean.java就是包含了一些私有变量和公有方法的类. 下面通过电子商务网站管理系统中  商品订单 简单介绍bean. 1 package com.oracle.jsp.bean; 2 /** 3 * 商品订单Bean 4 * @author svson 5 * 6 */ 7 public class Ord

Java Swing 简单介绍

Swing 是一个为Java设计的GUI工具包. Swing是JAVA基础类的一部分. Swing包括了图形用户界面(GUI)器件如:文本框,按钮,分隔窗格和表. Swing提供许多比AWT更好的屏幕显示元素.它们用纯Java写成,所以同Java本身一样可以跨平台运行,这一点不像AWT.它们是JFC的一部分.它们支持可更换的面板和主题(各种操作系统默认的特有主题),然而不是真的使用原生平台提供的设备,而是仅仅在表面上模仿它们.这意味着你可以在任意平台上使用JAVA支持的任意面板.轻量级组件的缺点

一:多线程--多线程简单介绍

一.进程和线程 1.什么是进程:进程是指在系统中正在运行的一个应用程序 每个进程之间是独立的,每个进程均运行在其专用且受保护的内存空间内 2.什么是线程 1个进程要想执行任务,必须得有线程(每1个进程至少要有1条线程) 线程是进程的基本执行单元,一个进程(程序)的所有任务都在线程中执行 二.多线程 1.什么是多线程:1个进程中可以开启多条线程,每条线程可以并行(同时)执行不同的任务 2.多线程的原理 同一时间,CPU只能处理1条线程,只有1条线程在工作(执行) 多线程并发(同时)执行,其实是CP

java transient简单介绍

我们都知道一个对象仅仅要实现了Serilizable接口,这个对象就能够被序列化,java的这样的序列化模式为开发人员提供了非常多便利,我们能够不必关系详细序列化的过程,仅仅要这个类实现了Serilizable接口,这个的全部属性和方法都会自己主动序列化. 然而在实际开发过程中,我们经常会遇到这种问题,这个类的有些属性须要序列化,而其它属性不须要被序列化,诚然,你能够让这个类来实现Externalizable接口,这个接口是Serilizable的子接口,可是你必须实现readExternal和

ios开发中 线程、进程即多线程简单介绍

本文转自:原文http://www.cnblogs.com/wendingding/p/3805088.html 一.进程和线程 1.什么是进程 进程是指在系统中正在运行的一个应用程序 每个进程之间是独立的,每个进程均运行在其专用且受保护的内存空间内 比如同时打开QQ.Xcode,系统就会分别启动2个进程 通过“活动监视器”可以查看Mac系统中所开启的进程 2.什么是线程 1个进程要想执行任务,必须得有线程(每1个进程至少要有1条线程) 线程是进程的基本执行单元,一个进程(程序)的所有任务都在线