传统线程的创建方式

传统线程技术回顾

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 e) {
                        e.printStackTrace();
                    }
                    System.out.println("1:" + Thread.currentThread().getName());
                    System.out.println("2:" + this.getName());
                }
            }
        };
        thread.start();

        Thread thread2 = new Thread(new Runnable(){
            @Override
            public void run() {
                while(true){
                    try {
                        Thread.sleep(500);
                    } catch (InterruptedException e) {
                        e.printStackTrace();
                    }
                    System.out.println("1:" + Thread.currentThread().getName());

                }                

            }
        });
        thread2.start();

        //第二种:new Runnable()
        new Thread(
                new Runnable(){
                    public void run() {
                        while(true){
                            try {
                                Thread.sleep(500);
                            } catch (InterruptedException e) {
                                e.printStackTrace();
                            }
                            System.out.println("runnable :" + Thread.currentThread().getName());

                        }
                    }
                }
        ){
            public void run() {
                while(true){
                    try {
                        Thread.sleep(500);
                    } catch (InterruptedException e) {
                        e.printStackTrace();
                    }
                    System.out.println("thread :" + Thread.currentThread().getName());

                }
            }
        }.start();

    }

}

传统定时器技术回顾

import java.util.Date;
import java.util.Timer;
import java.util.TimerTask;

public class TraditionalTimerTest {

    private static int count = 0;
    public static void main(String[] args) {
/*        new Timer().schedule(new TimerTask() {

            @Override
            public void run() {
                System.out.println("bombing!");

            }
        }, 10000,3000);*/

        class MyTimerTask extends TimerTask{

            @Override
            public void run() {
                count = (count+1)%2;
                System.out.println("bombing!");
                new Timer().schedule(/*new TimerTask() {

                    @Override
                    public void run() {
                        System.out.println("bombing!");
                    }
                }*/new MyTimerTask(),2000+2000*count);
            }
        }

        new Timer().schedule(new MyTimerTask(), 2000);

        while(true){
            System.out.println(new Date().getSeconds());
            try {
                Thread.sleep(1000);
            } catch (InterruptedException e) {
                // TODO Auto-generated catch block
                e.printStackTrace();
            }
        }
    }

}

传统线程互斥技术
传统线程同步通信技术
线程范围内共享变量的概念与作用
ThreadLocal类及应用技巧
多个线程之间共享数据的方式探讨
java5原子性操作类的应用
java5线程并发库的应用
Callable与Future的应用
java5的线程锁技术
java5读写锁技术的妙用
java5条件阻塞Condition的应用
java5的Semaphere同步工具
java5的CyclicBarrier同步工具
java5的CountDownLatch同步工具
java5的Exchanger同步工具
java5阻塞队列的应用
java5同步集合类的应用
空中网挑选实习生的面试题1
空中网挑选实习生的面试题2
空中网挑选实习生的面试题3

时间: 2024-11-04 23:18:03

传统线程的创建方式的相关文章

关于线程的创建方式,线程池的作用

线程的创建方式: 1.线程继承Thread类,通过该对象的start()方法启动线程 2.线程实现Runnable接口,通过往Thread类构造传入Runnable对象,thread.start()启动线程. 3.线程实现Callable接口.Callable相当于run方法有返回值的Runnable,与Future结合使用(接收返回值使用Future). 线程池的使用,为什么使用线程池? 复用线程,使用工作队列,避免无限制创建线程.重用线程降低开销,请求到达时,线程已存在,减少创建线程的等待时

线程的创建方式

引入案例: (售卖100张电影票) 1.继承Thread 类 2.实现Runnable 接口   3.实现Callable 接口 扩展: 4.使用匿名内部类 创建线程 5.使用lambda表达式 创建线程 线程的创建方式 原文地址:https://www.cnblogs.com/penguin1024/p/11762141.html

Java并发编程(01):线程的创建方式,状态周期管理

本文源码:GitHub·点这里 || GitEE·点这里 一.并发编程简介 1.基础概念 程序 与计算机系统操作有关的计算机程序.规程.规则,以及可能有的文件.文档及数据. 进程 进程是计算机中的程序,关于某数据集合上的一次运行活动,是系统进行资源分配和调度的基本单位,是操作系统结构的基础.在早期面向进程设计的计算机结构中,进程是程序的基本执行实体:在面向线程设计的计算机结构中,进程是线程的容器.程序是指令.数据及其组织形式的描述,进程是程序的实体. 线程 线程是操作系统能够进行运算调度的最小单

并发编程专题(二)-线程的创建方式

1.创建多线程几种方式 1.1 继承Thread,重写父类的run()方法 Java使用java.lang.Thread类代表线程,所有的线程对象都必须是Thread类或其子类的实例.每个线程的作用是完成一定的任务,实际上就是执行一段程序流即一段顺序执行的代码.Java使用线程执行体来代表这段程序流.Java中通过继承Thread类来创建并启动多线程的步骤如下: 定义Thread类的子类,并重写该类的run()方法,该run()方法的方法体就代表了线程需要完成的任务,因此把run()方法称为线程

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

内容摘抄来自:传智播客 张孝祥 老师的<Java高新技术>视频,   并加入了个人总结和理解. 虽然我没有参加过任何培训班,但我很大一部分知识都来自于传智播客的网络分享视频. 十分真挚的感谢张老师的公开视频. 1 import org.junit.Test; 2 /** 3 * 传统线程回顾 4 * 多线程不一定会提高运行效率,和CPU设计和架构有关. 5 * 多线程下载是抢了服务器的资源,并不是自身的机器加快. 6 * @author LiTaiQing 7 */ 8 public clas

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

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

Java---11---多线程的两种创建方式

多线程的两种创建方式: 下面这些东西是API文档中的: public class Thread extends Object implements Runnable 线程 是程序中的执行线程.Java 虚拟机允许应用程序并发地运行多个执行线程. 每个线程都有一个优先级,高优先级线程的执行优先于低优先级线程.每个线程都可以或不可以标记为一个守护程序.当某个线程中运行的代码创建一个新 Thread 对象时,该新线程的初始优先级被设定为创建线程的优先级,并且当且仅当创建线程是守护线程时,新线程才是守护

JAVA学习第二十三课(多线程(二))- (多线程的创建方式二 :实现Runnable接口(常用))

当一个类有父亲,但是其中的功能还希望实现线程,那么就不能采用继承Thread的方式创建线程 那么就可以通过接口的方式完成 准备扩展Demo类的功能,让其中的内容可以作为线程的任务执行 实现Runnable接口,Runnable接口中只有一个方法run 一.创建线程的第二种方法 Runnable的出现仅仅是将线程的任务进行了对象的封装 /* * 创建线程的第二种方法 * 1.定义类实现Runnable接口 * 2.覆盖接口中的fun方法,将线程的任务代码封装到run方法中 * 3.通过Thread

Java中多线程的学习和使用(一)概述及创建方式

转载请注明http://www.cnblogs.com/devtrees/p/4395477.html 多线程的学习 一.多线程概述 (一).进程与线程 在说多线程或者线程之前,让我们来了解一下更显而易见的进程概念.那什么是进程呢? 进程就是正在进行中的程序. Windows操作系统中在任务栏处右击,弹出的菜单中可看见任务管理器,打开它,就可以看见当前运行的程序和进程列表. 进程:是一个正在执行中的程序. 每一个进程执行都有一个执行顺序.该顺序是一个执行路径,或者叫一个控制单元. 线程:就是进程