java runnoob_JAVA线程学习笔记(一)

本文详细阐述了进程和线程的概念及其区别。介绍了进程作为操作系统中的任务单位,包含一定的资源和内存;线程作为进程中的执行单元,共享同一进程的资源,具有更高的并发性和效率。此外,还提供了创建和启动线程的示例代码。

/**

* @author cdw

*/

/**

* 进程是操作系统中运行的一个任务(一个应用程序运行在一个进程中)。

* 进程是一块包含了某些资源的内存区域。操作系统利用进程把它的工作划分为一些功能单元。

* 进程中所包含的一个或多个执行单元称为线程。进程还拥有一个私有的虚拟地址空间,该控件仅能被它所包含的线程访问.

* 线程只能归属于一个进程并且它只能访问该进程所拥有的资源。当操作系统创建一个进程后,该进程会自动申请一个名为主线程或首要线程的线程

*/

/**

*一个线程是进程的一个顺序执行流

*同类的多个线程共享一块内存空间和一组系统资源,线程本身有一个供程序执行时的堆栈。线程在切换时负荷

*小,因此,线程也被称为轻负荷进程

*一个进程中可以包含多个线程

*/

/**

*一个线程至少有一个线程

*线程的划分尺度小于进程,是的多线程程序的并发性高。另外,进程再执行过程中拥有独立的内存单元,而多个线程共享内存,从而极大的提高了

*程序的运行效率。

*线程在执行过程中与进程的区别在于每个独立的线程有一个程序运行的入口、顺序执行序列和程序的出口。但是线程不能独立执行,必须存在应用

*程序中,由应用程序提供多个线程执行控制

*线程通常用于在一个程序中需要同时完成多个任务的情况,我们可以将每个任务定义为一个线程,是他们得以一同工作。

*也可以用于单一线程可以完成,但是使用多线程可以更快的情况,比如下载文件

*多个线程“同时”运行只是我们感官上的一种表现,事实上线程是并发运行的,OS将时间划分为很多时间片段,尽可能均匀分配给每一个线程,获取

*时间片段的线程被CPU运行,而其它线程全部等待。

*所以微观上是走走停停的,宏观上都在运行,这种现象叫并发,但是不是绝对意义上的“同时发生”。

*/

public class Demo10{

public static class TestThread extends Thread{

@Override

public void run() {

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

System.out.println("我是线程");

}

}

}

public static void main(String[] args) {

Thread thread = new TestThread();//实例化线程

thread.start();//启动线程

}

}

public class Demo02 {

public static class TestThread{

public static void main(String[] args) {

Thread t1 = new MyThread();

Thread t2 = new MyThread();

Runnable runnable = new TestRunnable();

Thread thread = new Thread(runnable);//实例化线程并传入线程体

thread.start();//启动线程

t1.start();

t2.start();

}

/*使用Thread创建并启动线程*/

static class MyThread extends Thread{

public void run() {

for(int i = 1; i <= 100;i++) {

System.out.println(i);

}

}

}

/*使用Runnable创建并启动线程*/

public static class TestRunnable implements Runnable{

@Override

public void run() {

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

System.out.println("我是线程");

}

}

}

}

?

import java.awt.Color;

import javax.swing.JFrame;

import javax.swing.JPanel;

public class Demo04 {

public static class TestRunnable extends JFrame implements Runnable{

public static void main(String[] args) {

TestRunnable r = new TestRunnable();

r.setSize(300,300);

r.setVisible(true);

r.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

Thread t = new Thread(r);

t.start();

}

public void run() {

int i = 0;

JPanel panel = new JPanel();

panel.setSize(300,300);

this.setContentPane(panel);

while(true) {

i = i == 0 ? 1 :0;

if(i == 0) {

panel.setBackground(Color.BLACK);

}else {

panel.setBackground(Color.WHITE);

}

}

}

}

}

?

?

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符  | 博主筛选后可见
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值