(1):主线程1启动了一个线程2, 在线程1里将线程2赋值为NULL,结果线程2根本不会结束
(2) 线程2实现Runnable接口实现线程的独立,在线程1中创建线程2的时候不用Thread x=new Thread(new myThread())的形式可以直接调用线程2的run()方法;
(3)当程序运行到线程2的死循环的时候,窗口不响应任何事件,让人感觉实在不是多线程.
在我的理解多线程应该是:线程可以控制线程,线程可以并发的运行.
下面是那个程序的代码://程序的作用是当在面板上双击鼠标的时候,在双击处有闪烁的光标
package zhou;
import javax.swing.JPanel;
import javax.swing.*;
import java.awt.event.*;
import java.awt.*;
public class FreePanel extends JPanel implements MouseListener,MouseMotionListener
{
int x,y,clickCount; // 难道是这里JAVA修饰符的原因
Cursor cursor;
public FreePanel()
{
this.addMouseMotionListener(this);
this.addMouseListener(this);
}
public static void main(String []args)
{
JFrame frame=new JFrame("text");
frame.setSize(new Dimension(200,200));
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.getContentPane().add(new FreePanel());
frame.setVisible(true);
}
public void mouseEntered(MouseEvent e)
{}
public void mouseExited(MouseEvent e)
{}
public void mousePressed(MouseEvent e)
{
x=e.getPoint().x;
y=e.getPoint().y;
}
public void mouseReleased(MouseEvent e)
{}
public void mouseClicked(MouseEvent e)
{
if(e.getClickCount()==2)
{
System.out.println("单击了两 次");
cursor=null;
cursor=new Cursor(x,y,this);
cursor.run();
System.out.println("可以执行到这里");// 这句是永远都执行不到的
}
}
public void mouseMoved(MouseEvent e)
{
x=e.getPoint().x;
y=e.getPoint().y;
this.repaint();
}
public void mouseDragged(MouseEvent e)
{}
public void dctionPerformed(ActionEvent e)
{
}
public void paintComponent(Graphics g)
{
super.paintComponent(g);//这句的作用原来这么重要,没有它不能实现重新绘制
//图象,如果用repaint()方法的话,画面闪烁的像太阳耀斑爆发
g.drawString("("+x+","+y+")",x,y);
g.dispose();
}
}
class Cursor implements Runnable
{
FreePanel panel;
int x,y;
public Cursor(int x,int y,FreePanel panel)
{
this.panel=panel;
this.x=x;
this.y=y;
}
public void run()
{
while(true)
{
Graphics g=panel.getGraphics();
g.setColor(Color.BLACK);
g.drawLine(x,y-10,x,y);
try
{
Thread.sleep(200);
}
catch(InterruptedException e)
{
System.out.println("interruptedException");
}
g.setColor(panel.getBackground());
g.drawLine(x,y-10,x,y);
try
{
Thread.sleep(200);
}
catch(InterruptedException e)
{
System.out.println("interruptedException");
}
finally {
g.dispose();
}
}
}
}
是我的调用出现了问题,不是JAVA的多线程的问题,JAVA的多线程已经是经过无数次被证明的,在这里我不应该在遇到疑难问题的时候就怀疑JAVA, 不过也有一点让我同样感到可惜,因为几乎没有几个人怀疑JAVA的多线程,在某个条件下,多线程很可能会出现问题,这样的话应该是说给我自己听的,我老师就是这么说的
分享到:
相关推荐
在本文中,我们将深入了解如何使用JAVA来模拟多线程环境下的短信发送过程。该技术的应用场景在于同时为多个用户发送短信,而且每个短信发送动作是独立于其他发送动作的,这使得我们可以利用并发来提高发送效率。 ...
### Java多线程知识点详解 #### 一、Java多线程概述 **Java多线程**是指在Java程序中能够同时执行多个线程的技术。这种技术使得程序可以在多个任务之间并发执行,从而提高了程序的效率和资源利用率。本文将根据...
Java中的单线程和多线程是编程中的关键概念,特别是在服务器端开发中。了解它们的原理和应用对于构建高效、可扩展的客户端-服务器应用至关重要。以下是对这些概念的详细解析。 首先,我们来谈谈单线程。在Java中,...
### Java多线程编程详解:深入理解与实践 #### 一、理解多线程机制 多线程,作为现代编程语言的重要特性之一,允许在单一应用程序内并发执行多个任务,从而极大提升了程序的效率和响应速度。在Java中,多线程的...
Java多线程是Java编程中的核心概念,尤其在开发高性能、高并发的应用时,多线程技术显得尤为重要。本系列视频教程将深入讲解Java多线程的各个方面,帮助你掌握如何在Java环境中创建、管理以及优化多线程程序。 首先...
Java多线程并发实战与源码分析是Java开发中至关重要的一部分,它涉及到程序性能优化、系统资源高效利用以及复杂逻辑的正确同步。本书主要聚焦于Java多线程的基础理论和实际应用,虽然书中实例和源码相对较少,但仍然...
刚学完多线程和线程池,以及线程爱好者。 使用场景及目标: 大文件的快速下载,经测试在100M带宽的网络下,下载一个40M的文件,不超过两秒钟,当然还得根据自己电脑的配置来讲。 其他说明: 文件如果特别小,而...
### Java多线程知识点详解 #### 一、Java Thread 概念 在Java中,**线程**是一种轻量级的进程,它是程序执行流的最小单元。一个标准的Java应用通常至少包含一个线程,即主(Main)线程。Java支持多线程编程,这...
在Java编程中,多线程是并发处理任务的关键技术,它允许程序同时执行多个不同的任务。本篇文章将深入探讨如何实现线程的协同、停止、暂停以及继续等操作,这些都是多线程编程中的核心概念。 1. **线程的协同(协作...
本项目"JAVA实现多线程时钟代码程序"旨在帮助开发者深入理解如何在Java中实现多线程以及如何利用多线程进行图形化显示,如画钟。通过这个例子,我们可以学习到以下几个重要的知识点: 1. **线程基础**:Java中的...
### 经典Java多线程资料知识点解析 #### 一、基本原理 1. **进程与线程的概念:** - **进程**:是运行中的应用程序,它包含了一组顺序执行的指令,并且每个进程都有自己的独立内存空间。 - **线程**:是一个并发...
Java的多线程是编程中的一个关键概念,特别是在并发处理和高性能应用中。本文将深入讲解如何在Java中实现多线程以及线程间的通信。 首先,我们要理解一个虚假的多线程示例。在例1中,创建了两个`TestThread`对象,...
在Java编程语言中,多线程是并发执行多个任务或代码段的重要机制。这使得程序能够同时处理不同的任务,提高系统资源的利用率和程序的响应速度。本篇将详细讲解Java中实现多线程的两种主要方法:继承Thread类和实现...
Java多线程是Java编程中不可或缺的一部分,它允许并发执行多个任务,从而提高应用程序的效率和响应速度。本文将深入探讨Java多线程的相关知识点,包括它的用途、创建线程的方式、start()与run()的区别、Runnable和...
### Java多线程运算集合知识点解析 #### 一、Java多线程概念与原理 - **操作系统中的线程与进程**: - **进程**:指的是一个正在运行的应用程序,每个进程都拥有独立的内存空间。 - **线程**:是进程中的一个...
Java多线程是Java语言中的一个重要特性,它允许程序同时执行多个不同的任务,从而提高程序的效率和响应性。在操作系统层面,实现并发最常见的方式是通过进程和线程。进程是具有独立内存空间的执行单元,而线程是进程...