1.传统线程技术的回顾-JDK5多线程

内容摘抄来自:传智播客 张孝祥 老师的《Java高新技术》视频,   并加入了个人总结和理解。

虽然我没有参加过任何培训班,但我很大一部分知识都来自于传智播客的网络分享视频。

十分真挚的感谢张老师的公开视频。

 1 import org.junit.Test;
 2 /**
 3  * 传统线程回顾
 4  * 多线程不一定会提高运行效率,和CPU设计和架构有关。
 5  * 多线程下载是抢了服务器的资源,并不是自身的机器加快。
 6  * @author LiTaiQing
 7  */
 8 public class TraditionThread {
 9     /**
10      * 两种传统线程的创建方式
11      */
12     @Test
13     public void test1(){
14         //方式一
15         Thread thread = new Thread(){
16             /**
17              * 从Thread.class源代码中发现,run方法在默认情况下是执行默认target.run();
18              *  @Override
19                 public void run() {
20                     if (target != null) {
21                         target.run();
22                     }
23                 }
24
25                 private Runnable target;
26              */
27             @Override
28             public void run() {
29                 while(true){
30                     System.out.println(Thread.currentThread().getName());
31                     //不要使用this,因为在Runnable创建线程的方式中this是无效的
32                     //System.out.println(this.getName());
33                 }
34             }
35         };
36         thread.start();
37         /**
38          * 方式二
39          * 使用Runnable更好,更加符合面向对象程序设计的思想,程序结构的耦合性更低,将任务和宿主分离
40          */
41         Thread thread2 = new Thread(new Runnable(){
42             @Override
43             public void run() {
44                 while(true){
45                     System.out.println(Thread.currentThread().getName());
46                     //报错
47                     //System.out.println(this.getName());
48                 }
49             }
50         });
51         thread2.start();
52         //-------------------------------------
53         /**
54          * 考虑回运行哪一块代码?
55          */
56         new Thread(new Runnable(){
57             @Override
58             public void run() {
59                 while(true){
60                     try {
61                         Thread.sleep(500);
62                     } catch (InterruptedException e) {
63                         e.printStackTrace();
64                     }
65                     System.out.println("Runable:"+Thread.currentThread().getName());
66                 }
67             }
68         }){
69             /**
70              *     会运行此代码块,子类覆盖了父类的方法 ,那么就先运行子类,否则就去找父类
71              */
72             @Override
73             public void run() {
74                 while(true){
75                     try {
76                         Thread.sleep(500);
77                     } catch (InterruptedException e) {
78                         e.printStackTrace();
79                     }
80                     System.out.println("Run:"+Thread.currentThread().getName());
81                 }
82             }
83         }.start();
84     }
85 }
时间: 2024-08-30 02:54:08

1.传统线程技术的回顾-JDK5多线程的相关文章

传统线程技术回顾

/** * * @描述: 传统线程技术回顾 . * <p> * *   多线程机制会提高程序的运行效率? * ============================================== 不会,会更慢,因为CPU资源有限 为什么会有多线程下载呢? 是为了抢夺服务器带宽 ============================================== 不一定,多线程又不能提高CPU的主频,也就是单位时间能够执行的指令数目,如果是一个单线程的任务, CPU也只能处理单线

JAVA多线程提高一:传统线程技术&amp;传统定时器Timer

前面我们已经对多线程的基础知识有了一定的了解,那么接下来我们将要对多线程进一步深入的学习:但在学习之前我们还是要对传统的技术进行一次回顾,本章我们回顾的则是:传统线程技术和传统的定时器实现. 一.传统线程技术 1.创建方式 1.继承thread类 Thread t = new Thread(){ @Override public void run() { } }; t.start(); 2.实现Runnable接口 Thread t1 = new Thread(new Runnable() {

Java 传统线程技术

Java 多线程 在Java中,线程类Thread创建方式有两种:一是继承Thread类,重写run方法:二是,实现Runnable接口.大多数情况下,推荐使用第二种方式,实现runnable接口,这样可以很好的将任务与执行单元分离,更加突出面向对象的思想. 在JDK1.5之前,线程间互斥主依靠内置锁(监视器),而线程间通信则采用Object实例的wait,notify等方法.在JDK1.5之后,增加了很多线程新技术,如线程池.锁.信号量.条件.栅栏.阻塞队列.同步容器等. 1.       传

【java并发】传统线程技术中的定时器技术

传统线程技术中有个定时器,定时器的类是Timer,我们使用定时器的目的就是给它安排任务,让它在指定的时间完成任务.所以先来看一下Timer类中的方法(主要看常用的TimerTask()方法): 返回值 方法名 方法描述 void schedule(TimerTask task, long delay) 安排在指定延迟后执行指定的任务. void schedule(TimerTask task, long delay, long period) 安排指定的任务从指定的延迟后开始进行重复的固定延迟执

【java并发】传统线程技术中创建线程的两种方式

传统的线程技术中有两种创建线程的方式:一是继承Thread类,并重写run()方法:二是实现Runnable接口,覆盖接口中的run()方法,并把Runnable接口的实现扔给Thread.这两种方式大部分人可能都知道,但是为什么这样玩就可以呢?下面我们来详细分析一下这两种方法的来龙去脉. 1. 揭秘Thread中run()方法 上面我们看到这两种方式都跟run()方法有关,所以我们来看一下Thread的源码中run()方法到底都干了什么: @Override public void run()

传统线程技术(一)

一. 传统线程创建方法 1. 覆盖Thread子类的run方法中编写详细代码 2. 在传递给Thread的Runnable对象的run方法中编写详细代码 二. 实现代码 public class TraditionalThread { public static void main(String[] args) { // 方法1:直接new一个Thread的子类.让子类run方法覆盖父类的run方法 Thread thread1 = new Thread() { @Override public

(黑马Java多线程与并发库高级应用)01 传统线程技术回顾

传统创建线程的两种方式 package cn.itcast.heima2; public class TraditionalThread { public static void main(String[] args) { // TODO Auto-generated method stub Thread thread = new Thread() { @Override public void run() { while (true) { try { Thread.sleep(500); }

传统线程的创建方式

传统线程技术回顾 public class TraditionalThread { /** * @param args */ public static void main(String[] args) { //第一种:new Thread() Thread thread = new Thread(){ @Override public void run() { while(true){ try { Thread.sleep(500); } catch (InterruptedException

Java多线程与并发库高级应用-传统定时器技术回顾

传统定时器技术回顾(jdk1.5以前) public class TraditionalTimerTest { static int count = 0; public static void main(String[] args) { //10秒后开始执行,每隔3秒执行一次 new Timer().schedule(new TimerTask() { @Override public void run() { System.out.println("bombing..."); } }