Managing Inactivity Timeouts

Managing Inactivity Timeouts

ne way to implement an inactivity timeout in an application is to keep track of the last time a MouseEvent or KeyEvent was sent to an application. In a separate thread, set a timer that checks periodically if the difference between the current time and the timestamp is greater than the timeout interval. The following program demonstrates this technique.

TimeoutListener keeps track of the last InputEvent sent to the application by implementing MouseListener, MouseMotionListener, and KeyListener. Each time any one of those interface methods is called, TimeoutListener records the current time. TimeoutListener also implements the ActionListener interface so that it may be used with the Swing Timer class. Every time the Timer expires, it invokes the actionPerformed method in its registered ActionListener. TimeoutListener calculates the difference between the last recorded time and the current time when this happens. If it is greater than the timeout value, it exits. The Timer class may be active in a separate thread, so it is necessary to avoid race conditions by protecting the time recording and testing with a synchronized block.

The problem with this approach is that it is slightly inaccurate because of the polling. The inactivity timeout will be a value between the specified timeout and the timeout plus the polling period. To obtain a more accurate timeout, you can forego polling, set the Timer delay to the timeout value, and restart the Timer every time an event is delivered. When the timer expires, have its ActionListener exit the application. This approach may have a higher overhead, because restarting the Swing Timer involves removing the timer from a queue and adding it again, in addition to cancelling pending firings.

import java.awt.*;import java.awt.event.*;import javax.swing.*;class TimeoutListener implements MouseListener,                                 MouseMotionListener,                                 KeyListener, ActionListener{  Object _lock;  long _timeout, _lastTime;  public TimeoutListener(long timeout) {    _lock     = new int[1];    _timeout  = timeout;    _lastTime = System.currentTimeMillis();  }  private void __recordLastEvent(InputEvent event) {    synchronized(_lock) {      _lastTime = System.currentTimeMillis();      System.out.println("Last Event: " + _lastTime + " " + event);    }  }  public void actionPerformed(ActionEvent e) {    synchronized(_lock) {      // We really shouldn't exit, but cleanup gracefully instead      if(System.currentTimeMillis() - _lastTime >= _timeout) {        System.out.println("Timed out! " + System.currentTimeMillis());        System.exit(0);      } else        System.out.println("Still active.");    }  }  public void mouseDragged(MouseEvent e) { __recordLastEvent(e); }  public void mouseMoved(MouseEvent e)   { __recordLastEvent(e); }  public void mouseClicked(MouseEvent e) { __recordLastEvent(e); }  public void mouseEntered(MouseEvent e) { __recordLastEvent(e); }  public void mouseExited(MouseEvent e)  { __recordLastEvent(e); }  public void mousePressed(MouseEvent e) { __recordLastEvent(e); }  public void mouseReleased(MouseEvent e){ __recordLastEvent(e); }  public void keyPressed(KeyEvent e)     { __recordLastEvent(e); }  public void keyReleased(KeyEvent e)    { __recordLastEvent(e); }  public void keyTyped(KeyEvent e)       { __recordLastEvent(e); }}public class Timeout {  public static final int TIMEOUT = 10000;  // milliseconds  public static void main(String[] args) {    Frame frame = new Frame("Progress Demo");    WindowListener exitListener;    TimeoutListener timeoutListener;    Timer timer;    exitListener = new WindowAdapter() {      public void windowClosing(WindowEvent e) {        Window window = e.getWindow();        window.setVisible(false);        window.dispose();        System.exit(0);      }    };    timeoutListener = new TimeoutListener(TIMEOUT);    frame.addMouseListener(timeoutListener);    frame.addMouseMotionListener(timeoutListener);    frame.addKeyListener(timeoutListener);    frame.addWindowListener(exitListener);    frame.setSize(400, 400);    frame.setVisible(true);    // We poll at half the timeout interval to reduce the fudge factor    // introduced by events delivered at just under the timeout value.    timer = new Timer(TIMEOUT / 2, timeoutListener);    timer.setRepeats(true);    timer.start();  }}
devx-admin

devx-admin

Share the Post:
Razer Discount

Unbelievable Razer Blade 17 Discount

On September 24, 2023, it was reported that Razer, a popular brand in the premium gaming laptop industry, is offering an exceptional deal on their

Innovation Ignition

New Fintech Innovation Ignites Change

The fintech sector continues to attract substantial interest, as demonstrated by a dedicated fintech stage at a recent event featuring panel discussions and informal conversations

Import Easing

Easing Import Rules for Big Tech

India has chosen to ease its proposed restrictions on imports of laptops, tablets, and other IT hardware, allowing manufacturers like Apple Inc., HP Inc., and

Anthropic Investment

Amazon’s Bold Anthropic Investment

On Monday, Amazon announced its plan to invest up to $4 billion in the AI firm Anthropic, acquiring a minority stake in the process. This

AI Experts Get Hired

Tech Industry Rehiring Wave: AI Experts Wanted

A few months ago, Big Tech companies were downsizing their workforce, but currently, many are considering rehiring some of these employees, especially in popular fields

Razer Discount

Unbelievable Razer Blade 17 Discount

On September 24, 2023, it was reported that Razer, a popular brand in the premium gaming laptop industry, is offering an exceptional deal on their Razer Blade 17 model. Typically

Innovation Ignition

New Fintech Innovation Ignites Change

The fintech sector continues to attract substantial interest, as demonstrated by a dedicated fintech stage at a recent event featuring panel discussions and informal conversations with industry professionals. The gathering,

Import Easing

Easing Import Rules for Big Tech

India has chosen to ease its proposed restrictions on imports of laptops, tablets, and other IT hardware, allowing manufacturers like Apple Inc., HP Inc., and Dell Technologies Inc. more time

Semiconductor Stock Plummet

Dramatic Downturn in Semiconductor Stocks Looms

Recent events show that the S&P Semiconductors Select Industry Index seems to be experiencing a downturn, which could result in a decline in semiconductor stocks. Known as a key indicator

Anthropic Investment

Amazon’s Bold Anthropic Investment

On Monday, Amazon announced its plan to invest up to $4 billion in the AI firm Anthropic, acquiring a minority stake in the process. This decision demonstrates Amazon’s commitment to

AI Experts Get Hired

Tech Industry Rehiring Wave: AI Experts Wanted

A few months ago, Big Tech companies were downsizing their workforce, but currently, many are considering rehiring some of these employees, especially in popular fields such as artificial intelligence. The

Lagos Migration

Middle-Class Migration: Undermining Democracy?

As the middle class in Lagos, Nigeria, increasingly migrates to private communities, a PhD scholar from a leading technology institute has been investigating the impact of this development on democratic

AI Software Development

ChatGPT is Now Making Video Games

Pietro Schirano’s foray into using ChatGPT, an AI tool for programming, has opened up new vistas in game and software development. As design lead at business finance firm Brex, Schirano

Llama Codebot

Developers! Here’s Your Chatbot

Meta Platforms has recently unveiled Code Llama, a free chatbot designed to aid developers in crafting coding scripts. This large language model (LLM), developed using Meta’s Llama 2 model, serves

Tech Layoffs

Unraveling the Tech Sector’s Historic Job Losses

Throughout 2023, the tech sector has experienced a record-breaking number of job losses, impacting tens of thousands of workers across various companies, including well-established corporations and emerging startups in areas

Chinese 5G Limitation

Germany Considers Limiting Chinese 5G Tech

A recent report has put forth the possibility that Germany’s Federal Ministry of the Interior and Community may consider limiting the use of Chinese 5G technology by local network providers

Modern Warfare

The Barak Tank is Transforming Modern Warfare

The Barak tank is a groundbreaking addition to the Israeli Defense Forces’ arsenal, significantly enhancing their combat capabilities. This AI-powered military vehicle is expected to transform the way modern warfare

AI Cheating Growth

AI Plagiarism Challenges Shake Academic Integrity

As generative AI technologies like ChatGPT become increasingly prevalent among students and raise concerns about widespread cheating, prominent universities have halted their use of AI detection software, such as Turnitin’s

US Commitment

US Approves Sustainable Battery Research

The US Department of Energy has revealed a $325 million commitment in the research of innovative battery types, designed to enable solar and wind power as continuous, 24-hour energy sources.

Netanyahu Musk AI

Netanyahu and Musk Discuss AI Future

On September 22, 2023, Israeli Prime Minister Benjamin Netanyahu met with entrepreneur Elon Musk in San Francisco prior to attending the United Nations. In a live-streamed discussion, Netanyahu lauded Musk

Urban Gardening

Creating Thriving Cities Through Urban Gardening

The rising popularity of urban gardening is receiving increased recognition for its numerous advantages, as demonstrated in a recent study featured in the Environmental Research Letters journal. Carried out by

What You Need to Know About Cloud Security Strategies

What You Need to Know About Cloud Security Strategies

Today, many businesses are adopting cloud computing services. As a result, it’s important to recognize that security measures for data in the cloud are different from those in traditional on-premises

Romanian Energy Security

Eastern Europe is Achieving Energy Security

Canada and Romania have solidified their commitment to energy security and independence from Russian energy exports by signing a $3-billion export development agreement. The deal is centered on constructing two

Seamless Integration

Unlocking Seamless Smart Home Integration

The vision of an intelligently organized and interconnected smart home that conserves time, energy, and resources has long been desired by many homeowners. However, this aspiration has often been hindered

New Algorithm

MicroAlgo’s Groundbreaking Algorithm

MicroAlgo Inc. has revealed the creation of a knowledge-augmented backtracking search algorithm, developed through extensive research in evolutionary computational techniques. The algorithm is designed to boost problem-solving effectiveness, precision, and

Poland Energy Future

Westinghouse Builds Polish Power Plant

Westinghouse Electric Company and Bechtel have come together to establish a formal partnership in order to design and construct Poland’s inaugural nuclear power plant at the Lubiatowo-Kopalino site in Pomerania.

EV Labor Market

EV Industry Hurting For Skilled Labor

The United Auto Workers strike has highlighted the anticipated change towards a future dominated by electric vehicles (EVs), a shift which numerous people think will result in job losses. However,

Soaring EV Quotas

Soaring EV Quotas Spark Battle Against Time

Automakers are still expected to meet stringent electric vehicle (EV) sales quotas, despite the delayed ban on new petrol and diesel cars. Starting January 2023, more than one-fifth of automobiles