- 浏览: 797294 次
- 性别:
- 来自: 上海
文章分类
- 全部博客 (480)
- Spring (12)
- Hibernate (8)
- Struts2 (4)
- Java 基础-JDK-类-接口-URI-专题研究 (27)
- 线程、线程池、多线程高并发高可用、Socket通信 (15)
- Oracle数据库 (20)
- 一般-前端js-html-其它 (25)
- JYSK-互联网金融、金融科技、支付、公司、新闻等等 (8)
- Ajax-jQuery开源框架 (7)
- Json-轻量级的数据交换格式 (14)
- JavaScript (15)
- Jsp、Servlet、Servlet+JSP+JavaBean开发模式(MVC) (18)
- Html-JavaScript-前端-调用接口 (12)
- Sql Server 2005 (6)
- 正则表达式 (2)
- Java tools (18)
- 加签与验签、加密与解密 (3)
- Ajax技术核心-xmlHttpRequest(简称XHR) (6)
- xml-数据交换格式 (3)
- 信息采集 (1)
- Http - Https - HttpClient - httpCore-SSL-TLS (10)
- HtmlParser (2)
- 标签库 (1)
- SMS (2)
- jxl-导入导出 (4)
- poi-导入导出 (2)
- 定时器Timer+Quartz (6)
- 工作流引擎JBPM3.2.3 (4)
- 工作流引擎JBPM4 (0)
- 数据源-JNDI (0)
- tomcat、weblogic等应用服务器 (6)
- 工作流引擎jbpm5 (1)
- 搜索引擎Lucene (1)
- ant (1)
- 大数据-HBase (2)
- bigtable (0)
- 数据库设计 (4)
- jquery tab (0)
- mybatis (5)
- jquery ui 1.10.3 (5)
- Jboss7 (1)
- 规则引擎drools (0)
- 工作流引擎Activiti5 (0)
- 数据库-用户自定义函数 (0)
- 数据库-存储过程 (2)
- 数据库-视图 (0)
- 数据库-触发器 (0)
- 数据库-sql (2)
- highcharts-图表工具 (1)
- sql server 2008 (6)
- 诗词-工作室 (2)
- 数据割接 (1)
- GIS-地理信息系统 (2)
- RS-遥感技术 (1)
- GPS-全球定位系统 (1)
- java整合flex_RIA开发 (3)
- C#编程语言 (5)
- webservice_axis2_cxf_soap_wsdl (2)
- sql语句 (3)
- Flex_WebService_GIS (25)
- PHP编程语言 (0)
- ExtJS4.2 (1)
- Spring mvc (5)
- EasyUI1.4.2 (16)
- 日期时间工具类 (4)
- 随机数 (1)
- Arcgis api for js (0)
- Mysql数据库 (9)
- 移动互联网 java html5/flash socket netty (0)
- API接口 (1)
- AndroidStudio (0)
- Git (2)
- Maven (5)
- IDEA (0)
- 大数据-Hadoop (2)
- JPA (0)
- Spring boot (4)
- JSF (0)
- nginx_lua_module_redis (2)
- Activiti (1)
- bootstrap (1)
- AngularJS (10)
- 数据库-索引 (1)
- Linux及其连接工具SSH (4)
- java日志管理 (2)
- islider滑动控件 (1)
- jquery (1)
- 异常处理Exception (1)
- 秒杀与类秒杀系统 (1)
- 连接数据库、数据库连接池 (4)
- 数据库-临时表 (1)
- 软件设计模式-单例、多例、代理、工厂、观察者 (3)
- 集合框架 (5)
- 人工智能--Artificial intelligence、神经网络算法、机器学习 (1)
- 分布式应用 (1)
- SOA服务-Dubbo框架-Thrift框架 (2)
- Zookeeper分布式服务框架 (2)
- intellij idea (1)
- python编程语言 (0)
- 消息队列_MQ (0)
- 消息队列_RabbitMQ (2)
- 消息队列_ActiveMQ (1)
- 消息队列_Kafka (2)
- 缓存_Redis (4)
- 缓存_Memcache (0)
- 缓存_Ehcache (0)
- ivy-ivyde (1)
- google-protocol buffers (1)
- 正向代理-正向代理服务器 (1)
- 反向代理-反向代理服务器 (1)
- JVM内存模型 (0)
- Thunder框架 (1)
- NIO-非阻塞式IO (0)
- 软件测试、性能测试 (1)
- 序列化、Serializable接口、Externalizable接口 (3)
- 线程池-ExecutorService-ThreadPoolExecutor (1)
- web.xml (1)
- java开发-java工具-实用工具网站 (6)
- 医疗 (1)
- Filter-过滤器 (2)
- Unicode码-双字节字符编码 (1)
- OpenResty (1)
- 计算机网络 (1)
- eclipse_myeclipse_intellij idea (3)
- Enum (1)
- 大数据--Big Data (1)
- 云计算--Cloud computing (1)
- Elastic-Job (1)
- Redis (2)
- 文件流-IO操作 (6)
- 计算机基础知识 (1)
- Hessian-二进制RPC协议 (1)
- String类 (3)
- BigDecimal类 (1)
- java重要接口 (1)
- ReactJS (1)
- 跨域问题 (0)
- Map (1)
- 注解 (1)
- ASCII码-单字节字符编码 (1)
- 微服务、微服务架构 (2)
- RPC协议、RPC服务、RPC框架 (0)
- java反射 (1)
- java项目之classpath (1)
- 经典算法-树 (1)
- listener-监听器 (1)
- Interceptor-拦截器 (1)
- pojo javabean (2)
- 计算机科学与技术-进阶 (1)
- 代码规范与文档编写 (1)
- UML-统一建模语言 (1)
- 对接微信、支付宝 (3)
- 压力测试 (1)
- 办公软件-Excel (1)
- 办公软件-PPT (0)
- UTF8、GBK编码 (1)
- 微服务架构:Spring Cloud架构-Dubbo架构 (6)
- Nginx (1)
- 点滴业务 (1)
- form表单-json数据-转换与接口调用 (1)
- Junit单元测试 (1)
- 大数据-Spark (1)
- 大数据-Storm (1)
- 数据库事务-Spring事务 (0)
- elasticsearch (1)
- windows (1)
最新评论
--引用参考
https://blog.csdn.net/u013755987/article/details/51855098
通过继承Thread类或者实现Runnable接口可以创建线程。
【Thread类】
1、继承Thread类的方式创建线程(Thread类本身也实现了Runnable接口)
2、测试
【Runnable接口】
1、实现Runnable接口的方式创建线程
2、测试
--Thread.sleep(0)的意义--PPMM的故事
http://blog.csdn.net/wl455624651/article/details/7388250
--【ThreadLocal】
--彻底理解ThreadLocal
http://blog.csdn.net/lufeng20/article/details/24314381
--百度百科 ThreadLocal
https://baike.baidu.com/item/ThreadLocal/4915311?fr=aladdin
https://blog.csdn.net/u013755987/article/details/51855098
通过继承Thread类或者实现Runnable接口可以创建线程。
【Thread类】
1、继承Thread类的方式创建线程(Thread类本身也实现了Runnable接口)
public class ThreadDemo2 extends Thread{ private int ticketNum=10; /** * 火车票下单接口(重写父类线程run方法) */ @Override public void run() { /*解决并发方式之一*/ synchronized (this.getClass()) { String name=Thread.currentThread().getName(); System.out.println("---->\t"+name+"线程in"); if(ticketNum>0){ System.out.println(name+"线程抢了1张火车票,余票还剩="+(--ticketNum)+"张"); }else{ System.out.println(name+"线程没抢到票"); } } } @Override public void destroy() { System.out.println("销毁线程"); } }
2、测试
public class ThreadDemoTest2 { public static void main(String[] args) { ThreadDemo2 demo2=new ThreadDemo2(); for (int i = 0; i < 50; i++) { //共享同一个线程实例demo2 new Thread(demo2, "线程"+i).start(); } } }
【Runnable接口】
1、实现Runnable接口的方式创建线程
public class RunnableDemo implements Runnable{ private int ticketNum=30; /** * 火车票下单接口(重写父类线程run方法) */ @Override public void run() { /*解决并发方式之一*/ synchronized (this.getClass()) { String name=Thread.currentThread().getName(); System.out.println("---->\t"+name+"线程in"); if(ticketNum>0){ System.out.println(name+"线程抢了1张火车票,余票还剩="+(--ticketNum)+"张"); }else{ System.out.println(name+"线程没抢到票"); } } } }
2、测试
public class RunnableDemoTest { /* 创建线程时,实现Runnable接口的方式比继承Thread类的方式好在哪? 1、适合多个相同的程序代码的线程去处理同一资源的情况 ? 2、可以避免由于java单继承特征带来的局限性 3、增强开发程序的健壮性,代码可以多个线程共享,代码和数据是独立的? */ /** * 测试方法1 */ private static void test1(){ /** * 场景:100个线程去抢30张票 */ Runnable demo=new RunnableDemo(); for (int i = 0; i < 100; i++) { //创建对象的时候用接口创建 new Thread(demo,"线程"+i).start(); } } public static void main(String[] args) { test1(); /*Runnable demo2=new RunnableDemo(); Runnable demo3=new RunnableDemo(); Runnable demo4=new RunnableDemo(); new Thread(demo2).start(); new Thread(demo3).start(); new Thread(demo4).start(); System.out.println("主线程输出");*/ }
--Thread.sleep(0)的意义--PPMM的故事
http://blog.csdn.net/wl455624651/article/details/7388250
--【ThreadLocal】
--彻底理解ThreadLocal
http://blog.csdn.net/lufeng20/article/details/24314381
--百度百科 ThreadLocal
https://baike.baidu.com/item/ThreadLocal/4915311?fr=aladdin
发表评论
-
负载均衡
2020-08-27 23:32 290基于nginx配置负载均衡 参考 - - Nginx + Sp ... -
HttpAsyncClient-异步开源框架
2018-06-27 13:09 982引用参考 --了解HttpAsyncClient https: ... -
Callable接口、Future接口
2017-09-11 14:20 453参考博客: --java.util.concurrent 之 ... -
java线程优化方法或思路、高并发、大数据量
2017-09-04 19:17 384一、多线程 【生产问题】 某个接口xServic ... -
java.util.concurrent相关-ThreadPoolExecutor
2017-02-22 16:49 390引用参考: --Java ThreadPoolExecutor ... -
高可用 高并发 java并发相关 ThreadLocal、Volatile
2016-11-23 10:30 433参考博客: --互联网高可用架构技术实践 http://www ... -
java 多线程 AtomicInteger原子变量
2016-03-30 11:22 415/** * AtomicInteger * @au ... -
java四种线程池
2016-03-29 11:29 4891、newCachedThreadPool package ... -
socket通信例子_服务端写客户端读多线程写法
2016-03-16 15:06 4771、主程序 /** * 主程 ... -
java socket通信编程
2016-03-15 13:22 343http://haohaoxuexi.iteye.com/bl ... -
jvm_多线程_高并发
2013-10-17 14:34 692参考blog --Java中的多线程你只要看这一篇就够了 ht ... -
多线程数据同步之synchronized同步方法-多线程访问临界资源
2013-10-17 10:12 1308package com.tools; /** * 同步方 ... -
jdk+eclipse+adt+sdk+avd的Android环境搭建
2013-03-19 11:28 1066参照: http://mobile.51cto.com/a ... -
Synchronized理解
2012-07-18 15:30 956synchronized 的这个关键字,这个关键字用得比较少, ...
相关推荐
`Accessor`类实现了Runnable接口,每个线程执行`run`方法时会调用`ThreadLocalVariableHolder.increment()`来增加变量的值,然后打印出来。由于每个线程有自己的ThreadLocal变量副本,所以不同线程的输出不会相互...
在这个例子中,`MyRunnable`类中的`threadLocal`变量被两个不同的线程(`thread1`和`thread2`)使用。尽管它们共享同一个Runnable实例,但每个线程都会有自己的ThreadLocal副本,因此它们的`threadLocal`变量持有...
本篇文章将深入探讨`Thread`类的使用、线程的创建方法以及`Runnable`接口的实现。 ### 1. `Thread`类概述 `Thread`类是Java语言中的核心组件,位于`java.lang.thread`包中。它是所有线程操作的基础,包括启动、...
继承Thread类的方法直接扩展Thread类并重写run()方法,而实现Runnable接口则需要创建一个实现了Runnable接口的类,并在run()方法中定义线程的行为。这两种方式各有优缺点,继承Thread类允许直接使用this关键字引用...
2. 实现Runnable接口:如果一个类不能或者不希望直接继承Thread,可以选择实现Runnable接口。这样,一个Runnable对象可以被传递给Thread的构造函数,创建一个新的Thread实例。同样,线程的任务是在`run()`方法中定义...
**InheritableThreadLocal** 类与ThreadLocal类似,但其特性是当新线程被创建时(比如通过`Thread.start()`),新线程会继承父线程中InheritableThreadLocal变量的副本。这意味着在子线程中可以访问到父线程中设置的...
在Java中,多线程主要通过两种方式实现:继承Thread类和实现Runnable接口。这份"JAVA多线程的PPT和示例"将深入讲解这些内容,帮助开发者更全面地理解和掌握Java多线程技术。 首先,让我们来看看继承Thread类的多...
在Java中,主要通过两种方式创建线程:继承Thread类和实现Runnable接口。Thread类是Java内置的线程类,通过继承Thread并重写其run()方法,可以直接创建一个新的线程。例如: ```java class MyThread extends Thread...
在Java中,实现多线程的方式主要有两种:继承Thread类和实现Runnable接口。 1. 继承Thread类:创建一个新的类,继承自Thread类,然后重写其run()方法。创建该类的实例并调用start()方法,即可启动新线程。这种方式...
在Java中,实现多线程主要有两种方式:继承Thread类和实现Runnable接口。 1. 继承Thread类: 当自定义一个类继承自Thread类时,你需要重写run()方法,该方法包含线程要执行的代码。例如,在`TwoThread`类中,run()...
在Java中,实现多线程有两种主要方式:继承Thread类和实现Runnable接口。在这个聊天系统中,可能每个用户会有一个单独的线程来处理其发送和接收的消息,确保不同用户之间的交互不会互相阻塞。使用Thread类或Runnable...
在Java中,多线程的实现主要有两种方式:继承Thread类和实现Runnable接口。 1. 继承Thread类:创建一个新的类,该类继承自Thread类,并重写其run()方法。当创建此类的实例并调用start()方法时,就会启动一个新的...
如果我们需要继承其他类,同时也需要继承 Thread 类,这时实现 Runnable 接口是一个更好的选择。 2. Thread.start()与 Thread.run()有什么区别? Thread.start() 方法是 native 方法,它启动线程,使之进入就绪...
在Java中,有两种主要的方式来实现多线程:继承Thread类和实现Runnable接口。 首先,我们要理解多线程的基本概念。多线程是一种并发执行多个指令流的技术,每个指令流被称为一个线程。线程比进程更轻量级,因为它们...
主要的实现方式有两种:继承Thread类和实现Runnable接口。 1. 继承Thread类:这是创建新线程的最直接方法。通过创建一个新的Thread类的子类,并重写它的run()方法,就可以定义线程的行为。当创建这个子类的实例并...
- **实现Runnable接口**:创建一个实现了Runnable接口的类,实现run()方法,然后将这个Runnable对象作为参数传递给Thread类的构造函数。这种方式更灵活,可以避免单继承的限制,且便于实现资源共享。 5. **启动...
然后通过`Thread`类的构造函数传入你的`Runnable`实例,创建一个新的线程对象。 ```java class MyRunnable implements Runnable { public void run() { // 你的代码 } } Thread thread = new Thread(new ...
Java中的线程可以通过继承Thread类或实现Runnable接口来创建。Thread类代表一个线程,而Runnable接口则定义了线程运行时需要执行的任务。如果需要创建一个不依赖于特定Thread实例的可重用线程,推荐使用Runnable接口...
Java并发编程中的ThreadLocal类是一个非常重要的工具,它允许我们在多线程环境下为每个线程维护独立的变量副本,从而避免了线程间的数据共享和同步问题。ThreadLocal并不是一个线程,而是一个线程局部变量的容器。...