Coin163

首页 > 黑马程序员-线程

黑马程序员-线程

2021腾讯云限时秒杀,爆款1核2G云服务器298元/3年!(领取2860元代金券),
地址https://cloud.tencent.com/act/cps/redirect?redirect=1062

2021阿里云最低价产品入口+领取代金券(老用户3折起),
入口地址https://www.aliyun.com/minisite/goods

相关推荐:黑马程序员_多线程技术

一些概念: |--进程:就是一个正在执行中的程序; |--线程:就是进程中的一个独立的控制单元;线程在控制着进程的执行; |--一个进程中至少有一个线程; |--java虚拟机启动的时候会有一个进程java,exe    该进程中至少有一个线程负责java程序的执行,而且这个

黑马程序员-线程 1.什么是线程呢? 我理解看来这个这个就是一个程序可以同时执行不同的代码。 我的理解就是让程序可以同时执行不同的代码,至于执行的顺序就看系统怎么调配。 2.线程的流程 3.创造线程的方式 第一种方式: *继承Thread 第二种方式: 1.定义实现Runnable接口 2.覆盖Runnable接口当中的Run方法:将线程要运行的代码都放到run方法当中去。 3.通过Thread类建立线程对象。 4.将Runable接口的子类对象作为参数传递给Thead类的构造函数。这样是为什么呢?-因为,我们自己定义的run方法所属的对象是Runnable接口的子类,所以我们要让一个线程去指定对象的run方法,就必须明确该run方法指定线程对象 5.调用Thread的start方法开启并且调用run方法 package com.thread.text;public class Thread1 {

/* * 需求:简单的买票程序 * 多个窗口同时票 */

public static void main(String[] args)

{

Ticket t1 = new Ticket();

Thread td =

new Thread(t1);

Thread td1 =

new Thread(t1);

Thread td2 =

new Thread(t1);

Thread td3 =

new Thread(t1);

td.start();

td1.start();

td2.start();

td3.start();

}

}class Ticket implements Runnable{

private int pic = 100;

public void run()

{

while(pic>0)

{

System.out.println(Thread.currentThread().getName()+"卖出&q

相关推荐:黑马程序员-多线程部分(二.线程同步)

 ——- android培训、java培训、期待与您交流! ———- 我们知道,多线程带来了方便,但同时也出现数据安全问题。 看如下买票的例子: class Test implements Runnable {

private int ticket = 500;

public void run()

{

while(true)

uot; +pic-- );

}

}} 实现方式我继承接口有什么不同 因为Java是单一的继承,所以当我继承了一个Thread以后就不能够在继承其他的类了。而实现接口我们还可以实现其他接口,继承类,使得线程的程序更好的扩展 4.多线程的安全问题 synochroized关键字可以给代码块上锁 ,, 缺点:给CPU增加了一个判断,增加了负担。较为消耗资源。有得救得有失去。 问题原因:当多条语句在操作同一个线程共享数据时,一个线程对多条语句只执行了一部分,但是还没有执行完,另一个线程参与参与进来执行,就会导致数据共享错误。 解决办法:对于多条语句共享应给数数据时我们可以给这个代码段上锁,只有当前线程执行结束以后才可以让下一个线程来执行这段代码。用synchronizde关键字; 同步的前提: 1.必须要要有两个或作两个以上的线程 2.必须是多个线程使用同一个锁。 好处:解决了多线程的安全问题 缺点:多个线程需要判断锁。较为消耗资源。 *注意:同步函数的锁是this 静态的同步方法使用的是: 类名.class 延时加载的单列设计模式(面试总是问到) class single{

/** * 延时加载的单列设计模式 */

//给一个静态的变量

private static single s = null;

public single()

{

// TODO Auto-generated constructor stub

}

//获取当前的对象

public static single getInstance()

{

if (s == null)

{

synchronized (single.class)

{

if (s == null)

{

s =

new single();

}

return s;

}

}

}} 5.死锁 出现原因:

原文

黑马程序员-线程 1.什么是线程呢? 我理解看来这个这个就是一个程序可以同时执行不同的代码。 我的理解就是让程序可以同时执行不同的代码,至于执行的顺序就看系统怎么调配。 2.线程的流程 3.创

------分隔线----------------------------