【第22期】观点:IT 行业加班,到底有没有价值?

第二十三天:多线程

原创 2016年08月30日 08:56:02
package cn.itcast_02;


/*
 * 需求:我们要实现多线程的程序。
 * 如何实现呢?
 * 由于线程是依赖进程而存在的,所以我们应该先创建一个进程出来。
 * 而进程是由系统创建的,所以我们应该去调用系统功能创建一个进程。
 * Java是不能直接调用系统功能的,所以,我们没有办法直接实现多线程程序。
 * 但是呢?Java可以去调用C/C++写好的程序来实现多线程程序。
 * 由C/C++去调用系统功能创建进程,然后由Java去调用这样的东西,
 * 然后提供一些类供我们使用。我们就可以实现多线程程序了。
 * 那么Java提供的类是什么呢?
 * Thread
 * 通过查看API,我们知道了有2中方式实现多线程程序。
 * 
 * 方式1:继承Thread类。
 * 步骤
 * A:自定义类MyThread继承Thread类。
 * B:MyThread类里面重写run()?
 * 为什么是run()方法呢?
 * C:创建对象
 * D:启动线程

 */
public class MyThreadDemo {
public static void main(String[] args) {
// 创建线程对象
// MyThread my = new MyThread();
// // 启动线程
// my.run();
// my.run();
// 调用run()方法为什么是单线程的呢?
// 因为run()方法直接调用其实就相当于普通的方法调用,所以你看到的是单线程的效果
// 要想看到多线程的效果,就必须说说另一个方法:start()
// 面试题:run()和start()的区别?
// run():仅仅是封装被线程执行的代码,直接调用是普通方法
// start():首先启动了线程,然后再由jvm去调用该线程的run()方法。
// MyThread my = new MyThread();
// my.start();
// // IllegalThreadStateException:非法的线程状态异常
// // 为什么呢?因为这个相当于是my线程被调用了两次。而不是两个线程启动。
// my.start();


// 创建两个线程对象
MyThread my1 = new MyThread();
MyThread my2 = new MyThread();


my1.start();
my2.start();
}
}
版权声明:本文为博主原创文章,未经博主允许不得转载。 举报

相关文章推荐

第二十三天:多线程

package cn.itcast_02; /*  * 需求:我们要实现多线程的程序。  * 如何实现呢?  * 由于线程是依赖进程而存在的,所以我们应该先创建一个进程出来。  * ...

libevent札记 - 多线程安全

原文链接 Libevent 本身不是多线程安全的,在多核的时代,如何能充分利用 CPU 的能力呢,这 一节来说说如何在多线程环境中使用libevent,跟源代码并没有太大的关系,纯粹是...

程序员升职加薪指南!还缺一个“证”!

CSDN出品,立即查看!

黑马程序员--读写字节数组,随机读写流,集合IO的思维导图,多线程部分,单例设计模式,线程和进程的概念,Java中的线程的创建方式,线程的随机性,线程的状态图,多线程操作共享数据的安全性,死锁

------Java培训、Android培训、iOS培训、.Net培训、期待与您交流! ------ 1.      第二十三天回顾目录删除,复制,File类的方法,递归,IO流的配合。打印...

iOS_多线程

程序:每一个应用程序App都称为一个程序。 进程:正在运行的一个应用程序就是一个进程,相当于一个任务,进程拥有全部的资源,负责资源的调度和分配。 线程:线程就是程序中一个单独的代码块(单独的功能)。 ...

Spring ThreadPoolTaskExecutor Demo(多线程)

1,需求:使用多线程批量发送邮件 需要批量发送邮件大概400封左右,但是因为发送邮件受网络限制,所以经常导致等待超时。所以就想到了使用多 线程来发邮件,因为是异步的所以返回结果不受发邮件影响。 2,思...
收藏助手
不良信息举报
您举报文章:深度学习:神经网络中的前向传播和反向传播算法推导
举报原因:
原因补充:

(最多只允许输入30个字)