第九章作业

本文详细介绍了Java中的线程概念,包括线程的创建方式、生命周期、线程安全问题及解决方案、线程间的通信机制以及如何避免死锁等问题。
1.    一个进程就是一个执行中的程序,而每一个进程都有自己独立的一块
内存空间、一组系统资源,每一个进程的内部数据和状态都是完全独立的。

     Java程序执行中的单个顺序的流控制称为线程,多线程则指一个进程中可

以同时运行多个不同的线程,执行不同的任务。

2.

java线程分为前台线程(也称用户线程或普通线程)和后台线程(Daemon thread)。

     后台线程会随着主线程(main线程)的结束而结束,但是前台进程则不会(如果main线程先于前台进程结束,前台进程仍然会执行);或者说,只要有一个前台线程未退出,进程就不会终止。

     默认情况下,程序员创建的线程是用户线程;用setDaemon(true)可以设置线程为后台线程;而用isDaemon( )则可以判断一个线程是前台线程还是后台线程;

     jvm的垃圾回收器其实就是一个后台线程;

     setDaemon函数必须在start函数之前设定,否则会抛出IllegalThreadStateException异常;

 3.

两种

方式一:直接继承线程Thread类。该方法编写简单,可以直接操作线程,由于已经继承了Thread,不能再继承其他类了。

方式二:实现Runnable接口。当一个类已继承了另一个类时,就只能用实现Runnable接口的方式来创建线程;另外,使用此方法的更多原因是多个线程共享某个对象的资源。
4.

创建,就绪, 运行, 阻塞, 死亡。

start(), wait(), sleep(), join(), yield()

5.

线程安全就是多线程访问时,采用了加锁机制,当一个线程访问该类的某个数据时,进行保护,其他线程不能进行访问直到该线程读取完,其他线程才可使用。不会出现数据不一致或者数据污染。

多线程同时访问共享资源(变量),导致线程安全问题。

采用加锁机制, 加入线程同步的技术。

synchronized 代码块:监视器就是指定的对象。
synchronized 方法:监视器就是this对象。
synchronized 静态方法:监视器就是相应的Class对象。

6.

线程之间需要一些协调通信,来共同完成一件任务。

使用wait和notifyAll实现线程间同步通信 。

7.

死锁是指两个或两个以上的进程在执行过程中,由于竞争资源或者由于彼此通信而造成的一种阻塞的现象,若无外力作用,它们都将无法推进下去。此时称系统处于死锁状态或系统产生了死锁,这些永远在互相等待的进程称为死锁进程。

8.

class Dummy implements Runnable{
	private int count = 0;
	public void A() {
		System.out.println(Thread.currentThread().getName() + "  A");
		synchronized (this) {
			System.out.println(Thread.currentThread().getName() + "  A  " + count++);
		}
	}
	public synchronized void B() {
		System.out.println(Thread.currentThread().getName() + "  B  " + count++);
	}
	@Override
	public void run() {
		while(count < 100) {
			A();
			B();
		}
	}
}
public class Test {
	public static void main(String[] args) {
		Dummy d = new Dummy();
		Thread t1 = new Thread(d);
		Thread t2 = new Thread(d);
		t1.start();
		t2.start();
	}
}
9.

class Dummy_1 implements Runnable {
	public static boolean flag = true; 
	@Override
	public void run() {
		while(flag) {
			System.out.println("i am dummy_1");
			try {
				Thread.sleep(1000);
			} catch (InterruptedException e) {
				// TODO Auto-generated catch block
				e.printStackTrace();
			}
		}
	}
}
class Dummy_2 implements Runnable {

	@Override
	public void run() {
		Dummy_1.flag = false;
		System.out.println("i am dummy_2");
	}
}
public class Test {
	public static void main(String[] args) {
		new Thread(new Dummy_1()).start();
		try {
			Thread.sleep(10000);
		} catch (InterruptedException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
		new Thread(new Dummy_2()).start();
		System.out.println("main over");
	}
}






代码转载自:https://pan.quark.cn/s/f87b8041184b Language: 中文 欢迎来到戈戈圈! 当你点开这个存储库的时候,你会看到戈戈圈的图标↓ 本图片均在知识共享 署名-相同方式共享 3.0(CC BY-SA 3.0)许可协议下提供,如有授权遵照授权协议使用。 那么恭喜你,当你看到这个图标的时候,就代表着你已经正式成为了一名戈团子啦! 欢迎你来到这个充满爱与希望的大家庭! 「与大家创造更多快乐,与人们一起改变世界。 」 戈戈圈是一个在中国海南省诞生的创作企划,由王戈wg的妹妹于2018年7月14日正式公开。 戈戈圈的创作类型广泛,囊括插画、小说、音乐等各种作品类型。 戈戈圈的目前成员: Contributors 此外,支持戈戈圈及本企划的成员被称为“戈团子”。 “戈团子”一词最初来源于2015年出生的名叫“团子”的大熊猫,也因为一种由糯米包裹着馅料蒸熟而成的食品也名为“团子”,不仅有团圆之意,也蕴涵着团结友爱的象征意义和大家的美好期盼,因此我们最终于2021年初决定命名戈戈圈的粉丝为“戈团子”。 如果你对戈戈圈有兴趣的话,欢迎加入我们吧(σ≧︎▽︎≦︎)σ! 由于王戈wg此前投稿的相关视频并未详细说明本企划的信息,且相关视频的表述极其模糊,我们特此创建这个存储库,以文字的形式向大家介绍戈戈圈。 戈戈圈自2018年7月14日成立至今,一直以来都秉持着包容开放、和谐友善的原则。 我们深知自己的责任和使命,始终尊重社会道德习俗,严格遵循国家法律法规,为维护社会稳定和公共利益做出了积极的贡献。 因此,我们不允许任何人或组织以“戈戈圈”的名义在网络平台或现实中发布不当言论,同时我们也坚决反对过度宣传戈戈圈的行为,包括但不限于与戈戈圈无关的任何...
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值