java 线程理解

线程创建有两种方式:

1、实现runnable接口  2、继承thread 线程   都重写run方法

2、runnable接口优势:

java 单继承但可以实现多个接口

runnable 方式可以实现多线程共享一个公用资源

3、线程的生命周期:见下图

4、那么sleep 和 wait 是什么?

用于暂停线程使其他线程获取CUP时间片进行执行

5、各自区别:

sleep 是 thread 的方法   意义:等待多少毫秒后再唤醒且不会释放对象锁

wait 是object 方法 需要通过notify 或者 notifyAll 进行唤醒  意义:将该线程挂起释放对象锁

 //以下模拟3个窗口同时售卖5张车票的线程代码。
 //可以说明runnable 接口优势中多线程共享一个公用资源
private int titickits =500000;

     public static void main(String[] args) throws InterruptedException {
           Titickits t=new Titickits();

           Thread t1=new Thread(t,"窗口A");
           Thread t2=new Thread(t,"窗口B");
           Thread t3=new Thread(t,"窗口C");

           t1.start();
           t2.start();
           t3.start();
           t1.wait();
     }

     public  void run() {
           while(titickits>0) {
                titickits--;
                System.out.println(Thread.currentThread().getName()+"剩余"+titickits);
           }
     }

原文地址:https://www.cnblogs.com/lanSeGeDiao/p/9063269.html

时间: 2024-10-30 09:56:32

java 线程理解的相关文章

java线程理解001

概念:线程和进程 进程:简单的说,进程就是一个应用,即一个程序.现在的操作系统普遍都是多进程的操作系统.比如:你可以同时打开音乐播放器,也可以同时打开浏览器和视频播放器. 线程:线程,存在于进程之中,理解为一个进程中有多个线程.现在的程序也大多是多线程程序.比如:一个音乐播放器既可以同时播放音乐,也可以同时下载音乐. 单线程和多线程的执行顺序: 单线程程序执行:线程执行逐步向下,最终结束. 多线程程序执行:两个线程间快速切换(抢夺CPU资源),获得CPU资源的执行向下 注:多线程本质上也是单线程

java线程理解002

本章节主要是学习一种新的创建线程的方法,熟悉线程的常用方法,线程同步. 利用实现Runnable接口创建一个新的线程. 1 package interThread_v001; 2 3 public class Runable_v001 implements Runnable 4 5 { 6 // 线程体 7 8 public void run() 9 10 { 11 for(int i=0; i<100; i++) 12 { 13 14 System.out.println("Runnab

Java线程工作内存与主内存变量交换过程及volatile关键字理解

Java线程工作内存与主内存变量交换过程及volatile关键字理解 1. Java内存模型规定在多线程情况下,线程操作主内存变量,需要通过线程独有的工作内存拷贝主内存变量副本来进行.此处的所谓内存模型要区别于通常所说的虚拟机堆模型: 2. 线程独有的工作内存和进程内存(主内存)之间通过8中原子操作来实现,如下图所示: 原子操作的规则(部分): 1) read,load必须连续执行,但是不保证原子性. 2) store,write必须连续执行,但是不保证原子性. 3) 不能丢失变量最后一次ass

深入理解 Java 线程池

目录   一.简介  二.Executor 框架  三.ThreadPoolExecutor  四.Executors  参考资料 一.简介 什么是线程池 线程池是一种多线程处理形式,处理过程中将任务添加到队列,然后在创建线程后自动启动这些任务. 为什么要用线程池 如果并发请求数量很多,但每个线程执行的时间很短,就会出现频繁的创建和销毁线程.如此一来,会大大降低系统的效率,可能频繁创建和销毁线程的时间.资源开销要大于实际工作的所需. 正是由于这个问题,所以有必要引入线程池.使用 线程池的好处 有

java线程的理解

java thread类都是native方法实现的,所以没有用平台无关的方法实现,怎么实现的呢? 线程的实现: 第一种:使用内核线程实现. 内核线程就是直接使用操作系统内核支持的线程,由内核完成切换. 程序一般不会直接使用内核线程,而是使用内核线程的一种高级接口——轻量级进程,即通常意义上的线程.每个轻量级线程都要有一个内核线程支持,所以会消耗一定的内核资源. 而且因为是基于内核实现的,所以线程的操作需要系统调用,代价较高 2.用户线程 一般意义上来说只要不是内核线程都是用户线程,但是轻量级线程

由浅入深理解Java线程池及线程池的如何使用

前言 多线程的异步执行方式,虽然能够最大限度发挥多核计算机的计算能力,但是如果不加控制,反而会对系统造成负担.线程本身也要占用内存空间,大量的线程会占用内存资源并且可能会导致Out of Memory.即便没有这样的情况,大量的线程回收也会给GC带来很大的压力. 为了避免重复的创建线程,线程池的出现可以让线程进行复用.通俗点讲,当有工作来,就会向线程池拿一个线程,当工作完成后,并不是直接关闭线程,而是将这个线程归还给线程池供其他任务使用. 接下来从总体到细致的方式,来共同探讨线程池. 总体的架构

java 线程详解

5月7号  周末看了一下线程方面的内容 ,边看视频边看书还附带着参考了很多人的博客,一天的收获,写下来整理一下:感觉收获还是挺多的:过段时间可能看完java  这几大块要去看一下关于spring boot  的内容顺便  也整理一下:附上我参考的 几本书: 关于java  线程,首先要了解一下线程和进程之间的关系.区别以及他们之间的概念: 首先是线程: 什么是线程? 线程是在程序执行过程中能够执行部分代码的一个执行单元,也看看做是一个轻量级的进程:线程是程序内的程序控制流只能使用程序内分配给程序

java线程详细介绍

目录(?)[-] 一扩展javalangThread类 二实现javalangRunnable接口 三Thread和Runnable的区别 四线程状态转换 五线程调度 六常用函数说明 使用方式 为什么要用join方法 七常见线程名词解释 八线程同步 九线程数据传递 本文主要讲了java中多线程的使用方法.线程同步.线程数据传递.线程状态及相应的一些线程函数用法.概述等. 首先讲一下进程和线程的区别: 进程:每个进程都有独立的代码和数据空间(进程上下文),进程间的切换会有较大的开销,一个进程包含1

Java线程经典面试题

53道Java线程面试题 下面是Java线程相关的热门面试题,你可以用它来好好准备面试. 1) 什么是线程? 线程是操作系统能够进行运算调度的最小单位,它被包含在进程之中,是进程中的实际运作单位.程序员可以通过它进行多处理器编程,你可以使用多线程对运算密集型任务提速.比如,如果一个线程完成一个任务要100毫秒,那么用十个线程完成改任务只需10毫秒.Java在语言层面对多线程提供了卓越的支持,它也是一个很好的卖点. 2) 线程和进程有什么区别? 线程是进程的子集,一个进程可以有很多线程,每条线程并