JAVA-多线程(整理)

优先级>1~10

线程调度

OS:

抢占式>更高优先级的线程会取代当前运行的线程

非抢占式>即使存在更高优先的线程,也不会取代当前运行的线程

JVM:

绿色线程:最简单的线程处理模型.对os来说只有一个进程一个线程,因此

jvm必须维护该创建线程的原始信息等..

守护线程/非守护线程:

在创建线程的父线程死亡时,守护线程会自动结束,而非守护线程

则不会.

创建线程

实现Runnable接口 Thread类  ThreadGroup类

静态方法

int Thread.activeCount();返回当前线程所在的线程组中活动线程数目

Thread Thread.currentThread();返回当前线程

void Thread.sleep(long);

基本操作

1.设置daemon/non-daemon属性

setDaemon();设置是否为守护线程

2.启动

调用start()方法,系统回调run()方法

3.停止线程/挂起/恢复线程

stop()/suspend()/resume();

4.转让控制权给其他线程

yield()一般指让其他同优先级的线程获取cpu时间.

5.改变优先级

setPriority()

6.等待其他对象

obj.wait()

7.中断线程

interrupt()>发送中断线程的消息

isInterrupted()>不清空标志,该方法为对象方法;返回当前线程是否被中断

Thread.interrupted()>返回标志并清空,该标志表示当前线程是否被中断

同步 对象锁

线程分配CPU是异步的,线程的执行顺序也是不可预算的,当不同的线程访问共同的

资源,就会造成资源的不安全性,在底层中,每个线程访问资源时,只是访问了资源的

缓存值,不同的执行顺序导致了不同时间内缓存资源的不一致性.java提供了

synchronized关键字,当某个线程第一次访问该资源时,锁定资源,直至线程访问完毕,

其他线程才可以访问,当该线程在访问资源中被中断的时候,其他线程无法访问该资源.

object.wait();/object.notify();

这2个函数都必须在synchronized的代码块或者函数块里面使用.

当调用对象的wait方法时候,线程暂停,直至该对象的notify被调用,wait方法的后面的

代码才被执行.当该对象有多个wait方法被调用时,唤醒线程的方法会唤醒最早调用

wait的线程.系统同时还提供了notifyAll()方法以唤醒所有等待对象.

时间: 2024-12-17 15:29:09

JAVA-多线程(整理)的相关文章

java多线程整理

在java中,线程有两种实现方式,一种是继承Thread类,一种是实现Runnable接口 对于继承Thread代码实现大概如下: public class ThreadTest extends Thread{ //方法1 //方法2 //... //属性1 //属性2 //... @Override public void run() { //线程调用方法 } } 调用方式: public static void main(String[] args) { ThreadTest thread1

Java 多线程知识点整理

1.如何停止一个正在运行的线程? 使用共享变量,用volatile变量修饰,线程循环去访问该变量.如果线程因为发生某些事件进行阻塞,可以使用Thread的interrupt方法.可以使一个被阻塞的线程抛出一个中断异常,从而使线程提前结束阻塞状态,退出堵塞代码. class MyThread extends Thread { volatile boolean stop = false; public void run() { while (!stop) { System.out.println(g

java多线程面试题整理及答案(2018年)

java多线程面试题整理及答案(2018年) 什么是线程? 线程是操作系统能够进行运算调度的最小单位,它被包含在进程之中,是进程中的实际运作单位.程序员可以通过它进行多处理器编程,你可以使用多线程对 运算密集型任务提速.比如,如果一个线程完成一个任务要100毫秒,那么用十个线程完成改任务只需10毫秒.Java在语言层面对多线程提供了卓越的支 持,它也是一个很好的卖点. 线程和进程有什么区别? 线程是进程的子集,一个进程可以有很多线程,每条线程并行执行不同的任务.不同的进程使用不同的内存空间,而所

Java多线程面试题整理

线程是操作系统能够进行运算调度的最小单位,它被包含在进程之中,是进程中的实际运作单位.程序员可以通过它进行多处理器编程,你可以使用多线程对运算密集型任务提速.比如,如果一个线程完成一个任务要100毫秒,那么用十个线程完成改任务只需10毫秒.Java在语言层面对多线程提供了卓越的支持,它也是一个很好的卖点. 2) 线程和进程有什么区别? 线程是进程的子集,一个进程可以有很多线程,每条线程并行执行不同的任务.不同的进程使用不同的内存空间,而所有的线程共享一片相同的内存空间.别把它和栈内存搞混,每个线

java多线程面试题整理及答案

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

[转]Java多线程干货系列—(一)Java多线程基础

Java多线程干货系列—(一)Java多线程基础 字数7618 阅读1875 评论21 喜欢86 前言 多线程并发编程是Java编程中重要的一块内容,也是面试重点覆盖区域,所以学好多线程并发编程对我们来说极其重要,下面跟我一起开启本次的学习之旅吧. 正文 线程与进程 1 线程:进程中负责程序执行的执行单元线程本身依靠程序进行运行线程是程序中的顺序控制流,只能使用分配给程序的资源和环境 2 进程:执行中的程序一个进程至少包含一个线程 3 单线程:程序中只存在一个线程,实际上主方法就是一个主线程 4

Java多线程技术学习笔记(二)

目录: 线程间的通信示例 等待唤醒机制 等待唤醒机制的优化 线程间通信经典问题:多生产者多消费者问题 多生产多消费问题的解决 JDK1.5之后的新加锁方式 多生产多消费问题的新解决办法 sleep和wait的区别 停止线程的方式 守护线程 线程的其他知识点 一.线程间的通信示例 返目录回 多个线程在处理同一资源,任务却不同. 假设有一堆货物,有一辆车把这批货物往仓库里面运,另外一辆车把前一辆车运进仓库的货物往外面运.这里货物就是同一资源,但是两辆车的任务却不同,一个是往里运,一个是往外运. 下面

Java多线程基础(一)

线程与进程 1 线程:进程中负责程序执行的执行单元线程本身依靠程序进行运行线程是程序中的顺序控制流,只能使用分配给程序的资源和环境 2 进程:执行中的程序一个进程至少包含一个线程 3 单线程:程序中只存在一个线程,实际上主方法就是一个主线程 4 多线程:在一个程序中运行多个任务目的是更好地使用CPU资源 5  在Java语言中,引入对象互斥锁的概念,保证共享数据操作的完整性. 每个对象都对应于一个可称为"互斥锁"的标记,这个标记保证在任一时刻,只能有一个线程访问对象用关键字synchr

Java多线程完整版基础知识

Java多线程完整版基础知识 (翟开顺由厚到薄系列) 1.前言 线程是现代操作系统中一个很重要的概念,多线程功能很强大,java语言对线程提供了很好的支持,我们可以使用java提供的thread类很容易的创建多个线程.线程很不难,我对之前学习过的基础,在这做了一个整理,本文主要参考的是Java研究组织出版的j2se进阶和张孝祥-java就业培训教材这两本书 2.概述 2.1线程是什么 主要是线程与进程的区别,这里不再阐述,自行网上搜索 为什么使用线程:操作系统切换多个线程要比调度进程在速度上快很

java笔记整理

Java 笔记整理 包含内容     Unix Java 基础, 数据库(Oracle jdbc Hibernate pl/sql), web, JSP, Struts, Ajax Spring, Ejb, java和模式 Linux/Unix笔记 inode :存储编号(地址) ls -k:查看磁盘分区 ls -li:显示当前文件的inode号. 目录的大小跟文件的大小有关,跟目录里的文件(目录)数量无关. 一行多个命令的话,中间用分号分开.如:pwd;cal;date last | grep