J2SE总结(二)——线程

1、本章重点

线程概念:一个程序里面同一时刻所含有的不同的执行路径,程序的分支

创建和启动

调度,优先级

状态控制

同步,异步

2、进程和线程区别

进程:静态的,exe,class,dos只支持单进程

实质:线程的执行

3、创建和启动

1)实现runnable接口

Thread myThread =newThread(target)//与第二种方法的区别

runnable中只有一个run()方法,用于定义具体线程要执行的方法

thread静态调用

Start():启动线程

实例:

Class Runner1 implements Runnable{

Public void run(){

For(int i=0;i<100;i++){

System.out.println("Runner1:"+i);

}

}

}

Public class TestThread1{

Public static void main (string args[]){

Runner1 r=new Runner1(); //1.1

//r.run();//方法调用,而不是启动一个新线程

Thread t=new thread?//1.2

t.start();//启动

For(int i=0;i<100;i++){

System.out.println("main thread…."+i);

}

}

}

2)直接继承自thread

Public Runner1 extends Thread{

Public void run(){

For(int i=0;i<100;i++)

{

System.out.prinln("Runner1:"+i);

}

}

}

由于已经继承自thread,所以,在主线程main中不需要再newthread,只需要启动start就可以了

4、状态控制

知识点:1、sleep:thread的静态方法——异常:interruptedException

2、join方法:线程合并,本应多线程同时进行的,但是Join方法,等待另一个线程执行完后,再返回当前线程继续执行,好像只有一个线程

3、yield();让出CPU,给其他线程执行的机会

5、线程同步——锁机制

Public void add (string name){

Synchronized(this){

方法体

}

}

简写:

publicsynchronizaed void add(string name){}

注意事项:

锁定的对象不是完全锁定,只是被锁定的方法不能被访问,没有被锁定的方法还是可以被执行,所以如果涉及到改变值大小的问题,需要在每个方法上都加上锁。

以上是有关线程中涉及到的相关知识,针对于软考来说,只需了解线程和进程的基本概念即可,具体的代码可以先不用深入了解。此外,关于操作系统中涉及到的其他知识,可以参考自考操作系统概论,里面还涉及到磁盘读写,文件读写,PV操作,所机制(生产者和消费者问题)

时间: 2024-10-14 02:08:30

J2SE总结(二)——线程的相关文章

Java基础系列之(二) - 线程

一.线程的实现方式 1.继承Thread 2.实现Runnable接口 二.线程的状态 1.New(新生线程) 当你new一个Thread,newThread(r),这时处于线程的新生状态,此时程序还没有真正的运行. 2.Runnable(可运行的) 当启动start()方法时,此时线程处于可运行状态,不一定运行之中,这取决与线程是否得到CPU的运行时间片.事实上,一个线程并不是一直处于运行状态,偶尔需要被中断,让其他线程有运行的机会. 3.Blocked(被阻塞) 当发生以下情况被阻塞 -线程

爪哇国新游记之十二----线程创建的两种形式

public class Thread1 extends Thread{ public void run(){ int i=0; while(i<10){ i++; System.out.println(i); } } public static void main(String[] args){ Thread1 t=new Thread1(); t.start(); } } public class Thread2 implements Runnable{ @Override public v

C# 多线程(二) 线程同步基础(上)

本系列的第一篇简单介绍了线程的概念以及对线程的一些简单的操作,从这一篇开始讲解线程同步,线程同步是多线程技术的难点.线程同步基础由以下几个部分内容组成 1.同步要领(Synchronization Essentials) 2.锁(Locking) 3.线程安全(Thread Safety) 4.事件等待句柄(Signaling with Event Wait Handles) 5.同步上下文(Synchronization Contexts) 同步要领(Synchronization Essen

多线程(二) 线程的安全隐患

有了多线程就有了资源竞争,当多个线程对同一资源进行操作时就容易出现安全隐患. 下面举一个卖票的例子来说明线程的安全隐患 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 @interface ViewController () @property (assign, nonatomic)NSInteger ticke

多线程与高并发(二)线程安全

上一篇学习了多线程的一些基础知识:多线程的基本概念,及创建和操作多线程.内容相对简单,但多线程的知识肯定不会这么简单,否则我们也不需要花这么多心思去学习,因为多线程中容易出现线程安全问题. 那么什么是线程安全呢,定义如下: 当多个线程访问同一个对象时,如果不用考虑这些线程在运行时环境下的调度和交替运行,也不需要进行额外的同步,或者在调用方进行任何其他的协调操作,调用这个对象的行为都可以获取正确的结果,那这个对象是线程安全的. 简单的理解就是在多线程情况下代码的运行结果与预期的正确结果不一致,而产

细说.NET中的多线程 (二 线程池)

上一章我们了解到,由于线程的创建,销毁都是需要耗费大量资源和时间的,开发者应该非常节约的使用线程资源.最好的办法是使用线程池,线程池能够避免当前进行中大量的线程导致操作系统不停的进行线程切换,当线程数量到达了我们设置的上限,线程会自动排队等待,当线程资源可用时,队列中的线程任务会依次执行,如果没有排队等候的资源,线程会变为闲置状态. 使用ThreadPool来访问线程池 这种做法可以让我们不用那么复杂的去实现创建,重用线程的逻辑,但是也有一些限制,比如由他内置的方法,我们不知道什么时候线程池里面

C# 多线程(二) 线程同步基础

本系列的第一篇简单介绍了线程的概念以及对线程的一些简单的操作,从这一篇开始讲解线程同步,线程同步是多线程技术的难点.线程同步基础由以下几个部分内容组成 1.同步要领(Synchronization Essentials) 2.锁(Locking) 3.线程安全(Thread Safety) 4.事件等待句柄(Signaling with Event Wait Handles) 5.同步上下文(Synchronization Contexts) 同步要领(Synchronization Essen

java线程(二) - 线程安全性

前言: 要编写线程安全的代码,其核心在于要对状态访问的操作进行管理,特别是对共享的和可变的状态的访问. 当多个线程访问同一个可变的状态变量时没有使用合适的同步,那么程序就会出现错误,有三种方式可以修复这个问题: 不在线程之间共享该状态变量 将状态变量修改为不可变的变量 在访问状态变量时使用同步 线程安全性的定义: 当多个线程访问某个类时,不管运行时环境采用何种调度方式或者这些线程将如何交替执行,并且在主调代码中不需要额外的同步或者协同,这个类都能表现出正确的行为,那么就称这个类是线程安全的. 那

C#中的线程(二) 线程同步基础

1.同步要领 下面的表格列展了.NET对协调或同步线程动作的可用的工具:                       简易阻止方法 构成 目的 Sleep 阻止给定的时间周期 Join 等待另一个线程完成                       锁系统 构成 目的 跨进程? 速度 lock 确保只有一个线程访问某个资源或某段代码. 否 快 Mutex 确保只有一个线程访问某个资源或某段代码.可被用于防止一个程序的多个实例同时运行. 是 中等 Semaphore 确保不超过指定数目的线程访问某

线程二-----------线程池的问题

借鉴了几位大神的博客,学习下 线程池的作用: 线程池作用就是限制系统中执行线程的数量. 根据系统的环境情况,可以自动或手动设置线程数量,达到运行的最佳效果:少了浪费了系统资源,多了造成系统拥挤效率不高.用线程池控制线程数量,其他线程排队等候.一个任务执行完毕,再从队列的中取最前面的任务开始执行.若队列中没有等待进程,线程池的这一资源处于等待.当一个新任务需要运行时,如果线程池中有等待的工作线程,就可以开始运行了:否则进入等待队列. public class Test { /** * newSin