
Java线程
文章平均质量分 90
zhangliguo186
具有很强的团队荣誉感!
展开
-
JAVA线程池原理以及常用线程池介绍
什么原因使我们不得不使用线程池?个人认为主要原因是:短时间内需要处理的任务数量很多。 使用线程池的好处:1.减少在创建和销毁线程上所花的时间以及系统资源的开销 2.如不使用线程池,有可能造成系统创建大量线程而导致消耗完系统内存 以下是Java自带的几种线程池:1、newFixedThreadPool 创建一个指定工作线程数量的线程池。每当提交一个任务就创建一个工作线程,...原创 2015-04-14 14:04:59 · 200 阅读 · 0 评论 -
Spring初始化Bean状态
一、单例模式:在spring中其实是scope(作用范围)参数的缺省设定值每个bean定义只生成一个对象实例,每次getBean请求获得的都是此实例单例模式分为饿汉模式和懒汉模式;饿汉模式spring singleton的缺省是饿汉模式:启动容器时,为所有spring配置文件中定义的bean都生成一个实例(且是线程安全)懒汉模式在第一个请求时...2015-11-24 17:28:58 · 240 阅读 · 0 评论 -
java多线程 -- 线程状态及生命周期
1. 新建状态(New):新创建了一个线程对象。 2. 就绪状态(Runnable):线程对象创建后,其他线程调用了该对象的start()方法。该状态的线程位于可运行线程池中,变得可运行,等待获取CPU的使用权。 3. 运行状态(Running):就绪状态的线程获取了CPU的使用权,执行程序代码。 4. 阻塞状态(Blocked):阻塞状态是线程因为某种原因放弃CPU使用权,暂时停止运行。...2015-10-20 15:14:12 · 108 阅读 · 0 评论 -
java多线程 -- synchronized同步方法与同步块的区别
测试用例(1):使用synchronized方法实现简单售票系统 public class SaleTicket implements Runnable { public int count; public SaleTicket() { count = 30; } public synchronized voi...2015-10-16 16:34:33 · 314 阅读 · 0 评论 -
java多线程 -- 线程的构架(线程池)
import java.util.concurrent.Callable; import java.util.concurrent.ExecutionException; import java.util.concurrent.ExecutorService; import java.util.concurrent.Executors; ...2015-10-15 16:13:22 · 101 阅读 · 0 评论 -
java多线程 -- Lock应用,内部静态类,线程池(经典)
import java.util.concurrent.ExecutorService; import java.util.concurrent.Executors; import java.util.concurrent.Future; import java.util.concurrent.locks.Lock; import...原创 2015-10-15 15:19:01 · 140 阅读 · 0 评论 -
java多线程 -- 初学者指南(二):为什么要进行数据同步
Java中的变量分为两类:局部变量和类变量。局部变量是指在方法内定义的变量,如在run方法中定义的变量。对于这些变量来说,并不存在线程之间 共享的问题。因此,它们不需要进行数据同步。类变量是在类中定义的变量,作用域是整个类。这类变量可以被多个线程共享。因此,我们需要对这类变量进行数据 同步。 数据同步就是指在同一时间,只能由一个线程来访问被同步的类变量,当前线程访问完这些变量后,其他线...原创 2015-10-15 09:36:56 · 131 阅读 · 0 评论 -
java多线程 -- 初学者指南(一):线程简介
一、线程概述线程是程序运行的基本执行单元。当操作系统(不包括单线程的操作系统,如微软早期的DOS)在执行一个程序时,会在系统中建立一个进程,而在这个进 程中,必须至少建立一个线程(这个线程被称为主线程)来作为这个程序运行的入口点。因此,在操作系统中运行的任何程序都至少有一个主线程。进程和线程是现代操作系统中两个必不可少的运行模型。在操作系统中可以有多个进程,这些进程包括系统进程(由...原创 2015-10-15 09:36:26 · 120 阅读 · 0 评论 -
java多线程 -- join()方法应用
线程中,join方法用来保障线程的执行顺序~ public class DateSource implements Runnable { public void run() { // TODO Auto-generated method stub System.out.println("begin DateSource " + new...2015-10-14 14:52:53 · 93 阅读 · 0 评论 -
JDK之TimeUnit类应用
TimeUnit是什么?TimeUnit是java.util.concurrent包下的一个类,TimeUnit提供了可读性更好的线程暂停操作,通常用来替换Thread.sleep(),暂停线程时它不会释放锁,如果有线程中断了当前线程,该方法会抛出InterrupttedException异常。但是我们很多人并没有注意的一个潜在的问题就是它的可读性。Thread.sleep()是一个重载方法,可...2015-10-14 14:01:34 · 424 阅读 · 0 评论 -
java多线程 -- ThreadLocal使用总结
ThreadLocal和线程同步机制相比有什么优势呢?ThreadLocal和线程同步机制都是为了解决多线程中相同变量的访问冲突问题。 在同步机制中,通过对象的锁机制保证同一时间只有一个线程访问变量。这时该变量是多个线程共享的,使用同步机制要求程序缜密地分析什么时候对变量进行读写,什么时候需要锁定某个对象,什么时候释放对象锁等繁杂的问题,程序设计和编写难度相对较大。 概述:而ThreadLo...2015-10-12 16:07:32 · 413 阅读 · 0 评论 -
java线程15个经典问题(一)
(1)现在有T1、T2、T3三个线程,你怎样保证T2在T1执行完后执行,T3在T2执行完后执行? public class Test { @SuppressWarnings("static-access") public static void main(String[] args) throws InterruptedException { ...原创 2015-08-14 16:13:36 · 149 阅读 · 0 评论 -
Java守护线程
前言:在Java中有两类线程:User Thread(用户线程)、Daemon Thread(守护线程) 只要当前JVM实例中尚存在任何一个非守护线程没有结束,守护线程就全部工作;只有当最后一个非守护线程结束时,守护线程随着JVM一同结束工作。Daemon的作用是为其他线程的运行提供便利服务,守护线程最典型的应用就是 GC (垃圾回收器),它就是一个很称职的守护者。User 和Daem...原创 2015-07-28 15:15:23 · 95 阅读 · 0 评论 -
线程start与run方法区别
1:start()方法是启动(即开辟)一个线程的方法,因此线程的启动必须通过此方法。2:run()方法,只是Thread类的一个方法,它本身并不能开辟线程。 所以,当你用run()时候,程序只有一个线程,根本没达到你多线程的目的(是错误的)。而你用start()时候,你的程序又开辟了两个线程,所以结果不同一句话:start 启动新线程并在新线程中运行 run 中代码,而直接调用 run 方...原创 2015-07-28 14:17:57 · 185 阅读 · 0 评论 -
java 线程基本方法介绍
一、run()和start() 这两个方法应该都比较熟悉,把需要并行处理的代码放在run()方法中,start()方法启动线程将自动调用 run()方法,这是由Java的内存机制规定的。并且run()方法必须是public访问权限,返回值类型为void。二、关键字Synchronized 这个关键字用于保护共享数据,当然前提是要分清哪些数据是共享数据。每个对象都有一个锁标志,当...原创 2015-04-14 14:17:58 · 111 阅读 · 0 评论 -
线程のThread 和 Runnable区别总结
1:Thread不能实现线程之间变量资源共享,Runnable则可以2:Thread是类(是类当然就是单继承),Runnable是接口(接口可以多实现) Thread//使用Thread实现线程不能实现资源共享 class MyThread extends Thread { private int ticket=5; private Stri...2015-12-15 15:26:24 · 177 阅读 · 0 评论