好记性不如烂笔头73-多线程-继承thread实现简单多线程

通过继承class Thread或实现Runnable接口,我们都可以实现多线程。Thread中有两个最重要的函数run()和start()。

run()函数必须进行覆写,把要在多个线程中并行处理的代码放到这个函数中。

虽然run()函数实现了多个线程的并行处理,但我们不能直接调用run()函数,而是通过调用start()函数来启动多线程。

在调用start()的时候,start()函数会首先进行与多线程相关的初始化,然后start()函数会自己调用run()函数。

如果开发者自己直接调用了run()方法,那么这个将作为一个普通的串行程序进行执行,而不是基于多线程运转。



简单多线程的实现的java源代码

package com.thread;

/**
 * 一个简单的JAVA多线程
 *
 * @author 范芳铭
 */
public class EasyThread extends Thread {
    int i = 0, j = 0,k=0;
    int flag = 0;

    public void run() {
        //让系统运行6次,为了能观察结果即可
        for(int count = 0 ; count < 6 ; count ++){
            try {
                Thread.sleep(100);
            } catch (Exception e) {
                e.printStackTrace();
            }
            if (flag == 0) {
                i++;
                System.out.println("i=" + i);
            } else if (flag == 1){
                j++;
                System.out.println("B分割点:j=" + j);
            }
            else {
                k++;
                System.out.println("C分割点:k=" + k);
            }
        }
    }

    public static void main(String[] args) {
        EasyThread thread1 = new EasyThread();
        thread1.flag = 0;
        //不要直接调用run方法,否则会当成普通的串行线程处理
        //thread1.run();
        thread1.start();

        EasyThread thread2 = new EasyThread();
        thread2.flag = 1;
        thread2.start();

        EasyThread thread3 = new EasyThread();
        thread3.flag = 2;
        thread3.start();
    }
}

运行结果

B分割点:j=1

i=1

C分割点:k=1

B分割点:j=2

C分割点:k=2

i=2

B分割点:j=3

i=3

C分割点:k=3

B分割点:j=4

C分割点:k=4

i=4

B分割点:j=5

C分割点:k=5

i=5

C分割点:k=6

B分割点:j=6

i=6

如果我们把直接调用run方法,例如下面这样处理下。

thread1.run();

//thread1.start();

运行结果

i=1

i=2

i=3

i=4

i=5

i=6

B分割点:j=1

C分割点:k=1

B分割点:j=2

C分割点:k=2

C分割点:k=3

B分割点:j=3

B分割点:j=4

C分割点:k=4

B分割点:j=5

C分割点:k=5

B分割点:j=6

C分割点:k=6

很明显,第一个i相关的线程,是作为普通的方法进行调用的,后面两个,才是以多线程的方式运作。

时间: 2024-10-11 04:55:43

好记性不如烂笔头73-多线程-继承thread实现简单多线程的相关文章

好记性不如烂笔头74-多线程-实现Runnable接口的多线程

通过继承class Thread或实现Runnable接口,我们都可以实现多线程.如果有一个类,它已继承了某个类,又想实现多线程,那就可以通过实现Runnable接口来实现. run()函数必须进行覆写,把要在多个线程中并行处理的代码放到这个函数中. 把一个实现了Runnable接口的对象作为参数产生一个Thread对象,再调用Thread对象的start()函数就可执行并行操作. 例如: EasyRunnableThread thread2 = new EasyRunnableThread()

好记性不如烂笔头48-java拦截器-JDK自带动态代理和CGLIB效率比较(3)

Java中自带的动态代理的类必须要实现一个接口,而且据说使用反射的效率也并不是很高.于是CGLIB就诞生了. 使用CGLib实现动态代理,完全不受代理类必须实现接口的限制,而且CGLib底层采用ASM字节码生成框架,使用字节码技术生成代理类,理论上比使用Java反射效率要高. 那么我们测试下,这个运行的效率如何. 1. 测试的准备情况 准备1:好记性不如烂笔头46-java拦截器-彻底理解动态代理的概念(1) http://blog.csdn.net/ffm83/article/details/

从“好记性不如烂笔头”“记问之学不足为人师”到“一事不知是我之耻”

“好记性不如烂笔头”错在一笔记容易丢失,二考验随时发生而笔记常不随身.因此记到大脑里最可靠. “记问之学不足为人师”错在低估记忆力的作用而盲目推崇推理逻辑,这像不打地基盖楼,要不不牢靠要不会垮. “一事不知是我之耻”这是一种认真积极的态度,这样才能应付随时出现的挑战. 2017年3月12日00:34:22

多线程——继承Thread类

在具体介绍java多线程的使用之前,先让我们看看下面几个问题. 什么是多线程 简单的理解成:cpu"同时"执行多个任务,这就是多线程.(究其本质,当涉及到进程和线程的概念,上面的说法也不太合适,不过,简单的理解成这样也不为过.) 多线程解决了什么问题? 多线程通过充分利用cpu实现了提高计算机效率的问题. 使用了多线程,效率就一定会提高? 答案是否定的.在适当的情况下使用多线程,确实能提高效率,但是如果滥用多线程,有时候效率反而会降低.那么,什么情况下使用多线程会提高效率就成为了一个至

Python学习中的随笔,好记性不如烂笔头

本文 为博主看了 vamei 的blog 写下的随笔 . 致敬Vamei 1.type()   可以显示参数的类型 如 : a=12   type(a) 为 int 2.python的基本类型 为 int float bool string   如 int :  i=1   ,   float :  f=12.5  ,  bool : b= True  or  Flase , string :  s='Hello , word !' 使用前无需声明类型  即 动态类型 3.1序列有 tuple

好记性不如烂笔头

今天再次深刻领悟这个技能.tm竟然忘记博客园的用户名了.... 好记性不如烂笔头,布布扣,bubuko.com

开篇记(好记性不如烂笔头)

入园两年零三个月,我居然没有一点东西记载下来实在是不应该. 爷爷曾经告诉过我,好记性不如烂笔头.他告诉了我最鲜明的例子.爷爷的脑子一直很好用,记性也是比常人好上一些,当然这也直接导致了爷爷的性格很是高傲.爷爷年轻的时候喜欢舞文弄墨什么的,所以呢每逢人家红白喜事的时候都会去人家及里面瞅上一眼,看看人家送上的喜联或者挽联.有此爱好的还有我的一个另一个宋爷爷,他们经常约好一起的.爷爷老是自信于强悍的记忆能力,每次都是记在脑子中,而宋爷爷却每次都将那些很好的对联记载一个小本子上面.如今爷爷年纪越来越大,

好记性不如烂笔头89-spring3学习(10)-spring3常用schema(持续整理)

Spring3有很多的schema,这些schema对应很多不同的功能.使用这些常用的schema,能让我们避免重复发明轮子,提高我们的开发效率. 我以为这是一个很常见的信息,到网上随便整理下就能完成,可能用的关键词不对,怎么找也没有找到相对比较全面的. 正所谓,好记性不如烂笔头,自己动手把自己能收集到的整理下来,以后需要找资料也能方便点. spring-beans-3.0.xsd 用途:spring3最主要的schema,用于配置bean 命名空间: http://www.springfram

博客开通啦,好记性不如烂笔头

好记性不如烂笔头,勤能补拙.2016年,我即将步入工作,结束十多年的学生生活.如果说,人生每一个阶段都是一个新的开始,那么,今年又是我新生的一年. 新年新希望, 第一:希望自己能够工作顺利,在自己的岗位上做一个称职又出色的员工 第二:希望自己能够每天都开开心心的 第三:努力变美,努力减肥.多读书,多看报,少吃零食多运动- 第四:努力学习.学习才能使自己更上一层楼,才能让自己实现自己的愿望,学无止境,自制,坚持,总结,记录. 第五:希望家人和朋友们都开开心心的,心想事成万事如意. 第六:希望,我和