Java学习-关于多线程-1

转载 2016年08月30日 08:17:26

齐头并进完成任务-----多线程

-了解进程和线程

-掌握实现多线程方法

-熟悉线程的状态

-熟悉线程操作的方法

-线程同步的方法

-线程间通信方法


-了解进程和线程

==》进程是一个执行的程序,每一个进程偶有自己独立的内存空间,一组系统资源:    内部数据和状态都是独立!

         多线程是单个进程中,同时运行多个不同线程,执行不同任务(共享代码和数据):  多线程意味着一个程序的多行语句可以看上去同时运行!

总之:利用多线程可以使编程人员方便的开发出能同事处理多个任务的功能强大的应用程序


-认识线程

传统遇到if else,  while ,for循环多绕几个圈,一次只能运行一个程序块,多线程可以在一个程序块时,同时运行其他程序块以提高效率!

---------------------------------------------------------------------------

public class _1901 {

public static void main(String[] args) {
new TestThread().run();
for(int i = 0; i < 10; i++){
System.out.println("main线程在运行");
}
}
}

class TestThread{
public void run(){
for(int i = 0; i < 10; i++){
System.out.println("TestThread在运行");
}
}
}

必须要等TestThread中run()结束后才可以进行Main线程,怎么才能做到main和TestThread同时进行?

---------------------------------------------------------------------------

命名方法:继承Thread类

class 类名称 extends Thread{

属性;

方法;

修饰符 run{

}

}

---------------------------------------------------------------------------同时激活多个线程

public class _1902 {
public static void main(String[] args) {
// TODO Auto-generated method stub
new TestThread4().start();
for(int i = 0; i < 10; i++){
System.out.println("main线程在运行");
}
}
}

class TestThread4 extends Thread{
public void run(){
for(int i = 0; i < 10; i++){
System.out.println("TestThread在运行");
}
}
}

想使用多线程,必须调用Thread类中start()方法,也就相当于调用run()方法

---------------------------------------------------------------------------

-命名方法:实现接口Runnable

class 类名称 implements Runnable

{

属性;

方法;

修饰符 run(){

}

}

---------------------------

public class _1903 {
public static void main(String[] args) {
TestThread5 t = new TestThread5();
new Thread(t).start();

}
}

class TestThread5 implements Runnable{
public void run(){
for(int i = 0; i < 10; i++){
System.out.println("TestThread在运行");
}
}
}

Runnable 接口中无start()方法。  Thread类中的一个构造方法: public Thread(Runnable target)

将Runnable实例化对象作为参数去实例化Thread类对象。

--------------------------------------

-extends Thread 与 implements Runnable 之间的区别

thread类实现了Runnable接口,也就是说Thread类也是Runnable接口的一个子类

---------------------------------------------------------------------------

Thread类继承实例-1

public class _1904 {
public static void main(String[] args) {
// TODO Auto-generated method stub
TestThread6 t = new TestThread6();
t.start();
t.start();
t.start();
t.start();
}
}

class TestThread6 extends Thread{
private int tickets = 20;
public void run(){
while(true){
if(tickets > 0){
System.out.println(Thread.currentThread().getName() + "出售票" + tickets--);
}
}
}
}

只执行其中一个t.start()程序

---------------------------------------------------------------------------

Thread类继承实例-2

public class _1905 {
public static void main(String[] args) {
// TODO Auto-generated method stub
new TestThread7().start();
new TestThread7().start();
new TestThread7().start();
new TestThread7().start();
}
}

class TestThread7 extends Thread{
private int tickets = 20;
public void run(){
while(true){
if(tickets > 0){
System.out.println(Thread.currentThread().getName() + "出售票" + tickets--);
}
}
}
}

启动了4个线程,但是4个线程各自占有各自的资源,得出结论:用Thread类实际上无法达到资源共享的目的

---------------------------------------------------------------------------

用Runnable接口实现多线程使用实例

public class _1906 {
public static void main(String[] args) {
// TODO Auto-generated method stub
TestThread8 t = new TestThread8();
new Thread(t).start();
new Thread(t).start();
new Thread(t).start();
new Thread(t).start();
}
}

class TestThread8 implements Runnable{
private int tickets = 20;
public void run(){
while(true){
if(tickets > 0){
System.out.println(Thread.currentThread().getName() + "出售票" + tickets--);
}
}
}
}

4个线程同时进行且对票的资源进行了共享,无重复票数出现

Java多线程学习(吐血超详细总结)

本文主要讲了java中多线程的使用方法、线程同步、线程数据传递、线程状态及相应的一些线程函数用法、概述等。...
  • Evankaka
  • Evankaka
  • 2015年03月14日 13:13
  • 67959

Java多线程学习(吐血超详细总结)

目录(?)      转自:http://blog.csdn.net/evankaka/article/details/44153709#t8 本文主要讲了java中多线程的...
  • evan_shc
  • evan_shc
  • 2016年01月10日 22:08
  • 1206

跟着实例学习java多线程1-为什么使用?

如今的互联网时代、移动互联网时代,我们开发的所有的系统和网站以及服务都要求支持高负载、大并发,要求的是效率,串行的代码已经不能满足我们对执行效率的需求,当然也会白瞎了如今这么好的硬件,现在是个台式机至...
  • andy_gx
  • andy_gx
  • 2015年01月17日 23:38
  • 726

java学习视频day01多线程Thread

package cn.itcast.thread; /* 线程: 多线程的好处: 多线程解决了在一个进程中同时可以执行多个任务代码的问题。 自定义线程的创建方式: 方式一:继承Threa...
  • honghong75042
  • honghong75042
  • 2016年10月13日 09:18
  • 348

JAVA多线程与并发学习总结

一、 什么是并发 在操作系统中,是指一个时间段中有几个程序都处于已启动运行到运行完毕之间,且这几个程序都是在同一个处理机上运行,但任一个时刻点上只有一个程序在处理机上运行。 这里需要注意并发和并行...
  • sinat_29581293
  • sinat_29581293
  • 2017年03月01日 10:51
  • 1079

《java多线程编程核心技术》读书笔记1

第一章:java多线程技能 在学习线程之前我们首先要清楚一下进程的概念:            进程是操作系统结构的基础,是系统进行资源分配的和调度的独立单位。window...
  • GODBAR
  • GODBAR
  • 2016年09月03日 08:15
  • 740

Java 7之多线程第1篇 - 基础API介绍

一个程序只有一个进程,而一个进程可以包含多个线程,所以进程只能是并发,而线程可以并行。 进程是操作系统中资源分配的基本单位,同一进程的线程间可以共享所属进程的资源,在运行期间,线程才是操作系统的调度和...
  • mazhimazh
  • mazhimazh
  • 2013年11月23日 21:11
  • 4290

简单的 java 多线程编程练习。

9.     Java多线程编程题: 启动3个线程打印递增的数字, 线程1先打印1,2,3,4,5, 然后是线程2打印6,7,8,9,10, 然后是线程3打印11,12,13,14,15. ...
  • u010484308
  • u010484308
  • 2014年12月04日 16:49
  • 1465

Java核心技术卷1 第十四章 多线程

14.1 什么是线程 一个程序同时可以执行多个任务。通常,每一个任务称为一个线程,可以同时运行一个以上线程的程序称为多线程程序。多进程与多线程的区别: 每个进程拥有自己的一整套变量,而线程则...
  • qq_30154277
  • qq_30154277
  • 2016年07月02日 21:55
  • 397

Java多线程干货系列(1):Java多线程基础

前言多线程并发编程是Java编程中重要的一块内容,也是面试重点覆盖区域,所以学好多线程并发编程对我们来说极其重要,下面跟我一起开启本次的学习之旅吧。正文线程与进程1 线程:进程中负责程序执行的执行单元...
  • simplebam
  • simplebam
  • 2017年07月04日 08:44
  • 262
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:Java学习-关于多线程-1
举报原因:
原因补充:

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