`
touchmm
  • 浏览: 1037937 次
  • 性别: Icon_minigender_1
  • 来自: 北京
文章分类
社区版块
存档分类
最新评论

java速度入五._多线程编程基础

 
阅读更多

首先是线程的创建和jion()方法的使用。

class Sleeper extends Thread

{

private int sleeptime;

public Sleeper(String name,int sleepTime)

{

super(name);

sleeptime=sleepTime;

start();

}

public void run()

{

try

{

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

{

System.out.println(getName()+"print"+i);

sleep(sleeptime);

}

}catch(InterruptedException e)

{

System.out.println(getName()+"interrupted");

}

System.out.println(getName()+" over");

}

}

class Joiner extends Thread

{

private Sleeper sleeper;

public Joiner(String name,Sleeper sleeper)

{

super(name);

this.sleeper=sleeper;

start();

}

public void run()

{

try

{

System.out.println(getName()+" Begin");

System.out.println(sleeper.getName()+"begin jion()....");

sleeper.join();

for(int i=5;i>0;i--)

{

System.out.println(getName()+"print:"+i);

}

}catch(Exception e)

{

e.printStackTrace();

}

System.out.println(getName()+"Over!");

}

}

public class SimpleJoin {

public static void main(String[] args)

{

Sleeper sleeper1=new Sleeper("Tread A sleeper1",1500),

sleeper2=new Sleeper("Tread A sleeper2",1000);

Joiner joiner=new Joiner("ThreadB",sleeper2);

sleeper1.interrupt();

//System.out.println("Hello");

}

}

创建三个Tread,第三个jion了第二个。

运行结果:

Tread A sleeper1print0

Tread A sleeper2print0

Tread A sleeper1interrupted

Tread A sleeper1 over

ThreadB Begin

Tread A sleeper2begin jion()....

Tread A sleeper2print1

Tread A sleeper2print2

Tread A sleeper2print3

Tread A sleeper2print4

Tread A sleeper2 over

ThreadBprint:5

ThreadBprint:4

ThreadBprint:3

ThreadBprint:2

ThreadBprint:1

ThreadBOver!

第二个是线程的共享与互斥问题
class Water
{
static Object pool=new Object();
static int total=6; //the volumn of the pool
static int in=3; //the number of water which pool have
static int out=0; //the water drain away
}
class ThreadA extends Thread//drain water class
{
void drain()
{
synchronized(Water.pool)
{
System.out.println("Empty or not?"+isEmpty());
if(isEmpty())
{
try
{
Water.pool.wait();
}catch(InterruptedException e)
{
e.printStackTrace();
}
}
else
{
Water.out++;
System.out.println("Drain out water:"+Water.out);
}
}
}
public void run(){
while(Water.in<Water.total){
if(isEmpty())
System.out.println("Empty");
System.out.println("Drain out water now!");
drain();
try{
sleep(1000);
}catch(InterruptedException e){
e.printStackTrace();
}
}
}
public boolean isEmpty()
{
return Water.in==Water.out?true:false;
}
}
class ThreadB extends Thread{
void jswork(){
synchronized(Water.pool){
Water.in++;
Water.pool.notify();
System.out.println("In :"+Water.in);
}
}
public void run(){
while(Water.in<Water.total){
System.out.println("Empty");
jswork();
try{
sleep(3000);
}catch(InterruptedException e){
e.printStackTrace();
}
}
}
}
public class pool {
public static void main(String[] args)
{
ThreadA threadA=new ThreadA();
ThreadB threadB=new ThreadB();
threadB.start();
threadA.start();
//System.out.println("Hello!");
}
}
java中线程的同步有两种方法。
1.同步方法
synchronized void fun(){}
标记为synchronized的方法,在它执行完之前,其他标记为synchronized的方法都将被阻塞。
2.同步块
synchronized(someobject)
{}
只有拥有运行代码权限的线程才能运行同步块内的代码。
java中的线程通信
主要用到wait()和notify()方法,和操作系统里的p,v操作类似,interrupt()用于终止进程。
例子说明:池塘的类,两个线程,排水和进水,当排水量和进水量相同时,排水量被挂起,直到进水进程注水完成后,才通知排水进程排水。

分享到:
评论

相关推荐

    java多线程设计模式_java_设计模式_多线程_多线程课题_

    Java多线程设计模式是Java开发中的核心概念,它涉及到如何高效、安全地在多个执行线程之间共享资源和协调任务。设计模式是解决特定问题的成熟方案,它们是编程经验的结晶,可以帮助开发者在面临多线程挑战时快速找到...

    javawork_java_火车票问题_thread_多线程编程_

    通过实践“火车票问题”,开发者可以深入理解Java多线程编程的概念、同步机制以及在实际场景中的应用。在实际开发中,正确使用多线程技术可以极大地提高程序的效率和响应速度,但同时也需要注意资源竞争和并发控制,...

    java_PPT.rar_JAVA P_java .ppt_java ppt_java.ppt_javapot

    6. **多线程**:Java提供了内置支持来创建和管理多线程,PPT可能讲解了Thread类和Runnable接口,以及同步控制方法。 7. **网络编程**:Java的Socket编程允许开发网络应用,PPT可能会涉及TCP和UDP通信。 8. **JVM与...

    Download_Java.rar_多线程 下载_多线程下载

    在Java编程中,多线程是一项关键技能,它允许程序同时执行多个任务,极大地提高了效率。...通过分析和实践这个示例,你可以掌握多线程编程的核心概念,提高处理并发问题的能力,并为构建更加高效的应用打下坚实的基础。

    7.多线程__阶乘_java_阶乘运算_西南科技大学_多线程_

    在编程领域,多线程是一种常见且重要的技术,特别是在Java这样的多线程支持良好的语言中。本主题聚焦于“西南科技大学”的一个Java综合实验,该实验旨在通过多线程实现阶乘运算。在这个实验中,学生将学习如何利用...

    TCP.rar_java Tcp _tcp java_tcp 多线程_tcp多线程

    Java作为一种强大的编程语言,提供了丰富的API来支持TCP编程,使得开发者能够轻松地创建多线程TCP连接。本文将深入探讨如何使用Java实现多线程TCP连接,并涉及相关的关键知识点。 首先,TCP是一种面向连接的、可靠...

    tt.rar_ java_Java 代理服务器_java 线程_代理服务器_服务器

    首先,我们需要理解Java中的网络编程基础。Java提供了一系列的类库,如`java.net.Socket`和`java.net.ServerSocket`,用于创建和管理TCP/IP连接。在代理服务器的场景中,ServerSocket用于监听特定端口,等待客户端的...

    Java_多线程编程线程:大总结

    Java多线程编程涵盖了从基础概念到高级特性的广泛内容。掌握Java线程不仅能够提升程序的并发处理能力,还能优化系统的整体性能。通过上述知识点的深入理解与实践,开发者可以有效地利用Java的多线程机制,解决实际...

    TCP-socket.zip_java_java Tcp _java socket _socket_socket多线程

    这个学习资源可以帮助我们深入了解Java中的TCP Socket编程和多线程技术。 首先,让我们来看看TCP协议。TCP是一种面向连接的、可靠的传输协议,它保证了数据包在传输过程中的顺序和完整性。通过三次握手建立连接,四...

    多线程编程基础.pdf

    描述与标签:多线程编程基础.pdf 在现代软件开发中,多线程编程已经成为了一项不可或缺的技能。多线程编程是指在单个程序中同时运行多个线程(Thread),每个线程都可以独立执行程序的一部分,从而实现并行处理,...

    ss.rar_java apple_多线程 java_接力赛跑_赛跑 java

    在实际编程中,开发者需要理解如何创建和管理线程,以及如何利用同步机制确保线程安全,这些都是Java多线程编程的基础。通过这样的练习,可以加深对并发编程的理解,提高编写高并发应用的能力。

    Java多线程编程

    Java多线程编程是Java开发中的重要组成部分,它允许程序同时执行多个任务,极大地提高了程序的效率和响应性。在Java中,多线程主要通过`Thread`类和并发工具来实现,接下来我们将深入探讨这些关键知识点。 1. **...

    JAVA_sample_150.rar_JavaPOS_Sample.zi_java samp_java sample

    这些样本涵盖了从基础语法到高级特性的各种实例,包括但不限于类、对象、数据类型、控制结构、异常处理、IO流、多线程、网络编程、集合框架、反射、注解、设计模式等内容。 在"JAVA编程150例"这个压缩包文件中,每...

    java_player.rar_java_player.rar_player

    因此,理解如何使用Thread或ExecutorService进行多线程编程至关重要。 4. **音频处理API**:Java Sound API是Java标准库中的一部分,用于处理音频文件。开发者可能需要使用它来加载、播放、控制音轨。 5. **文件I/...

    Java高手真经(编程基础卷)光盘全部源码 免积分

    javathread.zip 10.Java多线程编程(线程池、生产者消费者、存取款实例) javautil.zip 11.Java常用实体类 javaxml.zip 14.XML属性文件 第4部分(6个程序包) javagui.zip 15.Java GUI库对比实例 javaawt.zip ...

    java 多线程编程实战指南(核心 + 设计模式 完整版)

    《Java多线程编程实战指南》这本书深入浅出地讲解了Java多线程的核心概念和实战技巧,分为核心篇和设计模式篇,旨在帮助开发者掌握并应用多线程技术。 1. **线程基础** - **线程的创建**:Java提供了两种创建线程...

    choujiangxitong.rar_JAVA 抽奖_抽奖_抽奖 JAVA_抽奖 线程_抽奖系统

    【JAVA 抽奖系统设计与实现】 在信息技术领域,抽奖系统是常见的应用,特别是在各种活动、促销或游戏中,用于随机选取获奖者。...通过分析和理解这个项目,可以深入学习Java的多线程编程、GUI开发以及软件设计原则。

    javatcp.rar_java TCP线程_java tcp 线程

    在“javatcp.rar”压缩包中的文件可能包含这些示例代码的实现,通过分析和学习这些代码,你可以更好地理解Java TCP编程以及多线程的应用。同时,这些示例也可以作为基础,扩展到更复杂的应用场景,如聊天服务器、...

    java多线程编程实例_Source

    Java多线程编程是Java开发中的重要组成部分,它允许程序同时执行多个任务,提升系统效率。在本实例源码中,包含17个章节和上百个实例,旨在深入讲解Java多线程的核心概念和实际应用。 一、线程基础知识 在Java中,...

    java_Zhili.rar_360_Java编程题

    这些题目旨在测试编程基础、算法理解、问题解决能力以及对Java语言特性的掌握程度。"java_Zhili.rar_360_Java编程题"这个压缩包很可能包含了360公司在招聘过程中使用的Java编程题目,也可能包括了其他知名公司如百度...

Global site tag (gtag.js) - Google Analytics